Page 1 sur 2

upload et stockage en base de donnée

Posté : 05 févr. 2016, 10:52
par narutorey
bonjours à tout j'ai une petite question en faite c'est tout bête mais j'ai ce formulaire
<html>
    <head>
        <title>Ajout d'un fichier</title>
        <link rel="icon" href="./image/icone.ico" />
    </head>
  <body>
  <center>
  <img src="./image/cooltext163306792130411.png"/>
  <form enctype="multipart/form-data" name="fichiers" action="upload.php" method="POST" >
    <div style="text-align:justify;">
    <center>
    <label for="service">Nom du service auquel ce fichier appartient :</label>
    </br>
    <select name="service">
	<option>service1</option>
	<option value="1">service2</option>
</select>
      </br>
      </br>
	  
<input type="hidden" name="MAX_FILE_SIZE" value="524288000">
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Choisissez votre document ici : <input type="file" name="fichier" />
    </center>
    </div>
      </br>
      </br>
      <input type="reset" value="Annuler" />&nbsp;&nbsp;&nbsp;<input type="submit" />
    </form>
    </center>
  </body>
</html>
qui utilise cette page pour uploader
<html>
<body>
<?php
include('head.php');
include('fonctionupload.php');
$service = $_POST['service'];
$date = date('jS  F Y');
$repertoire = "./upload";  
//connection au serveur:
  $connexion = mysqli_connect( "localhost", "root", "", "base_de_fichier") ;
 
		
if (!file_exists($repertoire))
        
	{
                
		mkdir ($repertoire,0700);
                
		echo " -=> Création du repertoire $repertoire réussi<br>";
        
	}
if(isset($_FILES['fichier'])) // si formulaire soumis
{
    $content_dir = 'upload/'; // dossier où sera déplacé le fichier
  
    $tmp_file = $_FILES['fichier']['tmp_name'];
  
    if( !is_uploaded_file($tmp_file) )
    {
        exit("Le fichier est introuvable");
    }
     
    // on vérifie maintenant l'extension
    $filename = $_FILES['fichier']['name'];
    $ext = pathinfo($filename, PATHINFO_EXTENSION);
    if($ext != 'pdf')
    {
        exit("Le fichier n'est pas un PDF,veuillez le convertir en PDF s'il vous plais!!!!!!!!!!");
    }
    // on copie le fichier dans le dossier de destination
    $name_file = $_FILES['fichier']['name'];
    if(preg_match('#[\x00-\x1F\x7F-\x9F/\\\\]#', $name_file) )
    {
    exit("Nom de fichier non valide");
    }
    else if(!move_uploaded_file($tmp_file, $content_dir . $name_file))
    {
    exit("Impossible de copier le fichier dans $content_dir");
    } 
    echo "Le fichier a bien été uploadé";

	$chemin = ($content_dir . $name_file . $ext );
	if (verifUpload($chemin, $service)==1)
	{
					$req = mysqli_query($connexion,"INSERT INTO file (chemin, service, date) VALUES ('$chemin','$service', '$date')");
					if ($req)
					{
						include("head.php");
					echo "Ajout à la base de donnée effectu&eacute;";
					echo"</br>";
					echo"</br>";
					echo "<A HREF='AjouterUnDocForm.php'>Ajouter un autre document</A>";
					}
	}
	else
	{
		include("head.php");
		echo"l'ajout à la base de donnée à échoué";
	}
}			
				
?>
</body>
</html>
et cette page est sensé faire une requête pour ajouter le chemin du fichier le service choisi (service de l'entreprise) et la date à une base de donnée après avoir uploader le fichier dans un dossier et pour vérifier si le fichier n'est pas déjà dans la base de donnée elle utilise le code suivant
<?php
function verifUpload($chemin, $service)
{
if ($connexion = mysqli_connect('localhost','root','','base_de_fichier'))
	{
		$resultat = mysqli_query($connexion, "SELECT * FROM file WHERE chemin = '$chemin' AND service = '$service'");
			if (mysqli_num_rows($resultat)==0)
				{
					return 1;
				}
			else
			{
				return 0;
			}
	}				
}
?>


or la quand je fait l’opération pour ajouter un fichier (obligatoirement des pdf) bin il se dépose juste dans le dossier et la requête SQL pour stocker les info dans la base de donnée (pour afficher ces fichiers pdf dans d'autre pages du site et pour les rendre consultable et téléchargeable (même si je sais pas comment on rends téléchargeable un fichier que l'on affiche ) ne s'effectue pas et donc rien ne se mets dans ma base de donnée pouvez vous me venir en aide? je ne trouve pas du tout la solution (oui je débute dans l'upload excusez moi j'y connais pratiquement rien )

Re: upload et stockage en base de donnée

Posté : 05 févr. 2016, 11:07
par Spols
A priori je dirais bien que le problème est ici
$chemin = ($content_dir . $name_file . $ext );
$name_file contient déjà l'extension donc pas besoin de l'ajouter.

Re: upload et stockage en base de donnée

Posté : 05 févr. 2016, 11:09
par narutorey
oui mais j'ai essayé en enlevant l’extension et le problème y est toujours :?

Re: upload et stockage en base de donnée

Posté : 05 févr. 2016, 11:40
par narutorey
donc voilà je suis bloqué :?

Re: upload et stockage en base de donnée

Posté : 05 févr. 2016, 12:23
par narutorey
serai-ce possible d'avoir de l'aide je peut pas avancer dans mon projet sans ça

Re: upload et stockage en base de donnée

Posté : 05 févr. 2016, 16:12
par Spols
Alors tu dois chercher du coté de ta fonction verifupload

vérifie ta requète, affiche la, affiche le résultat complet de ta requète, test la dans phpmyadmin,

Re: upload et stockage en base de donnée

Posté : 05 févr. 2016, 16:22
par narutorey
sauf que dans ma base y'a rien et le but du script c'est de la remplir

Re: upload et stockage en base de donnée

Posté : 05 févr. 2016, 17:09
par narutorey
donc comment on fait si y'a rien dans ma base?

Re: upload et stockage en base de donnée

Posté : 05 févr. 2016, 17:10
par Spols
Alors tu dois chercher du coté de ta fonction verifupload

vérifie ta requète, affiche la, affiche le résultat complet de ta requète, test la dans phpmyadmin,
Est-ce que mysqli_num_rows($resultat)==0 renvoie bien TRUE ?
pourquoi ne pas mettre des echo un peu partout pour suivre la valeur de tes variables et voir si cela correspond a ce qu'il faudrait ?

Fais ce que je te propose de faire, dis nous ce que cela a donné et on pourra continuer à t'aider

Ce forum n'est pas un tchat, laisse le temps au gens de lire et de t'aider, reposter ne fera pas avancer les choses plus vite

Re: upload et stockage en base de donnée

Posté : 05 févr. 2016, 17:12
par narutorey
désolé j'ai tendance à trop m'enflammer je vais faire ce que tu me dit

Re: upload et stockage en base de donnée

Posté : 05 févr. 2016, 17:20
par narutorey
quand je fait
<?php
function verifUpload($chemin, $service)
{
if ($connexion = mysqli_connect('localhost','root','','base_de_fichier'))
	{ echo $chemin;
	  echo $service;
		$resultat = mysqli_query($connexion, "SELECT * FROM file WHERE chemin = '$chemin' AND service = '$service'");
			if (mysqli_num_rows($resultat)==0)
				{
					return 1;
				}
			else
			{
				return 0;
			}
	}				
}
?>
ça retourne

Le fichier a bien été uploadéupload/126.pdf1

Re: upload et stockage en base de donnée

Posté : 05 févr. 2016, 17:37
par narutorey
un echo $resultat me pète une erreur du style Catchable fatal error: Object of class mysqli_result could not be converted to string in C:\Program Files (x86)\EasyPHP-Devserver-16.1-RC5\eds-www\intranet\fonctionupload.php on line 7

Re: upload et stockage en base de donnée

Posté : 05 févr. 2016, 17:52
par narutorey
je pense pas que ce sois grand chose j'ai juste l'impression que il passe pas dans le if qui est après le
echo "Le fichier a bien été uploadé";

  $chemin = ($content_dir . $name_file . $ext );

Re: upload et stockage en base de donnée

Posté : 05 févr. 2016, 17:58
par Spols
Un echo $resultat ne retourne rien d'interessant,
mais un echo mysqli_num_rows($resultat); serait bien mieux

d'après le retour, oui en effet il test ta fonction verifupload mais il n'a pas le bon retour.

un petit echo "ici"; permet de voir le résultat d'un if
<?php
function verifUpload($chemin, $service)
{
if ($connexion = mysqli_connect('localhost','root','','base_de_fichier'))
	{ echo $chemin;
	  echo $service;
		$resultat = mysqli_query($connexion, "SELECT * FROM file WHERE chemin = '$chemin' AND service = '$service'");
			 echo mysqli_num_rows($resultat);
			 if (mysqli_num_rows($resultat)==0)
				{
					echo "ici1";return 1;
				}
			else
			{
				echo "ici0";return 0;
			}
	}				
}
?>

Re: upload et stockage en base de donnée

Posté : 05 févr. 2016, 18:03
par @rthur
Modération :
Les "up" (plusieurs messages à la suite d'un même auteur dans un temps très court) sont interdits sur PHPFrance.

Si tu n'as pas obtenu de réponse, c'est (au choix) :
- que ta question est mal formulée : reformule-la différemment ;
- que personne ne connaît la réponse ici : faire un "up" ne te donnera pas davantage de résultats ;
- que la réponse demandée exige un travail important que personne ne va faire à ta place ;
- que trop peu de temps s'est écoulé depuis ton précédent message pour qu'un membre ait pu y répondre.