Image PHP

Résolu
Bonjour,

J'ai un formulaire comme l'image ci-jointe qui doit enregistrer toutes les informations rentrées sur la base de données, et pour l'image il doit la sauvegarder dans un dossier et mettre le chemin dans la base de données. Etant encore amateur en Php, je n'arrive pas à trouver le bon code pour le faire marcher. Voici le code que j'ai écris, il marche très bien apart pour l'image.

<?php 
require 'testimage.php';


if(isset($_POST['regie']))      $regie=$_POST['regie'];
else      $regie="";

if(isset($_POST['annonceur']))      $annonceur=$_POST['annonceur'];
else      $annonceur="";

if(isset($_POST['categorie']))      $categorie=$_POST['categorie'];
else      $categorie="";

if(isset($_POST['titre']))      $titre=$_POST['titre'];
else      $titre="";

if(isset($_POST['lien']))      $lien=$_POST['lien'];
else      $lien="";

if (isset($_FILES['fileToUpload']))		$image=$_FILES['fileToUpload'];
else	  $image="";

if(isset($_POST['nombrepassage']))      $nombrepassage=$_POST['nombrepassage'];
else      $nombrepassage="";

if(isset($_POST['datefin']))      $datefin=$_POST['datefin'];
else      $datefin="";


if(empty($regie) OR empty($annonceur) OR empty($categorie) OR empty($titre) OR empty($image) OR empty($nombrepassage) OR empty($datefin))
    { 
    echo '<font color="red">Attention, aucun champs ne peut rester vide  !</font>'; 
    } 


else      
    { 

$db = mysql_connect('localhost', 'root', 'SaadBn159753')  or die('Erreur de connexion '.mysql_error());


    mysql_select_db('geomedia',$db)  or die('Erreur de selection '.mysql_error()); 
     

    $sql = "INSERT INTO Banner(Régie, Annonceur, Catégorie, Titre, Lien, Image, Nombre_Passage, Date_Fin ) VALUES('$regie','$annonceur','$categorie','$titre', '$lien','$target_file','$nombrepassage','$datefin')"; 
     
 
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 


    echo 'Vos infos ont bien été ajoutées.'; 

    mysql_close();  
    }  
?>


code de l'upload d'image :
<?php
$target_dir = "upload/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);

if(isset($_POST["submit"])) {

if ($target_file == "upload/") {
$msg = "Aucun fichier selectionné";
$uploadOk = 0;
}

else if (file_exists($target_file)) {
$msg = "Fichier déjà existant.";
$uploadOk = 0;
}

else if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
echo "Seuls les formats JPG, JPEG, PNG & GIF sont autorisé.";
$uploadOk = 0;
}

else if ($_FILES["fileToUpload"]["size"] > 5000000) {
$msg = "Fichier trop large.";
$uploadOk = 0;
}

else if ($uploadOk == 0) {
$msg = "Erreur votre image n'a pas bien été reçu";

} else {

if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
$msg = "Le fichier ". basename( $_FILES["fileToUpload"]["name"]). " a bien été reçu";
echo($msg);
}

}

}

?>

2 réponses

  1. Modification du code : L'URL est rentré dans la db mais l'image ne s'upload pas.
    0
    1. slt

      dans ton formulaire, tu as bien mis:
      <form method="post" action="" enctype="multipart/form-data">
      ?
      0
      1. Salut,

        Oui
        <form method="post" action="connect.php" enctype="multipart/form-data">
        <td> <input size="50px"type="file" name="fileToUpload" id="fileToUpload"></td>
        0
      2. ton dossier upload existe bien au même niveau que ton fichier d'upload ?
        0
      3. Oui j'ai bien vérifié, l'image est soi-disant détécté et le champs File n'est pas marqué vide apparament mais les conditions sur l'image dans le code ne sont pas executé donc la taille, extension etc ne sont pas vérifié et l'image n'est pas uplodé par la suite
        0
      4. <input type="submit" name="envoi" id="envoi" value="Envoyer">

        if(isset($_POST["envoi"])) {
        0
      5. Oui c'est bien marqué sur le code que j'ai partagé
        0