Signaler

Problème pour telecharger l'image [Résolu]

Posez votre question delavega470 222Messages postés dimanche 9 février 2014Date d'inscription 21 juillet 2017 Dernière intervention - Dernière réponse le 5 juil. 2017 à 18:18 par jordane45
Bonjour à tous , j'essaye de uploader une photo mais je n'arrive pas je pourrai avoir un coup svp !
move_uploaded_file($file_tmp_name,$files_dest) je crois qu'il ya un souci la bas on dirai la variable est vide


<style type="text/css">
.error
{
	color: red;
} 
.success
{
	color:green;
	}</style>
<?php 
$bd = new PDO ('mysql:host=localhost; dbname=macom_bd','root','');
  if (isset($_POST['ok'])) {
  

  if(!empty( $_POST['nom_marq']))
  {
    if (!empty($_FILES)) {
  $file_name = $_FILES["image"]["name"];
  $file_extension = strrchr($file_name,".");
  $file_tmp_name = $_FILES['image']['tmp_name'];
  $files_dest = 'image/'.$file_name;
  $extension_autorisees = array('.jpeg','.JPEG','.png','.PNG','.gif','.GIF','.jpg','.JPG');
  $nom_marq = $_POST['nom_marq'];
  $statu = 1;
  echo $_FILES["image"]["size"];
  echo $file_tmp_name;
  //test si l'extension fait partie des extensions autorisées
   if(in_array($file_extension,$extension_autorisees))
   { 
     if($_FILES["image"]["size"] < 5000000)
     {
      //envoi du fichier
    if (move_uploaded_file($file_tmp_name,$files_dest) AND $_FILES["image"]["error"]==0) {
      
      //verification du fichier existant 
      $reponse = $bd->query('SELECT id from marque where img_marq="'.$file_name.'" ');
      $resultat = $reponse->fetch();
      if ($resultat) {
        echo "<font color='red'>Cette image existe déjà...</font>";
      } else {
        $req = $bd->prepare( 'INSERT INTO marque(nom_marq,im_marq,statu_img) VALUES (?,?,?)');
      $req->execute(array($nom_marq,$file_name,$statu));
      echo "<font color='green'>image envoyé avec succès</font>";
      }
      
    }  else {
      echo "<font color='red'>Une erreur est survenue lors de l'envoi de l'image</font>";
    }
  } else {
      echo "<font color='red'> Taille de l'image doit être inferieur a 5Mo </font>";
    }
    

   } else {
    echo "<font color='red'>seul les images jpeg,jpg,gif et png sont autorisés...</font>";
   }
} 
   else
      {
    echo "<span class ='error'>Veuillez remplir  les champs !</span>";
        }
    
    }
   
     else
      {
 	  echo "<span class ='error'>Veuillez remplir  les champs !</span>";
        }
 
}  

?>
Afficher la suite 
Utile
+0
plus moins
Bonjour,

1 - commence par ça :http://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs

2 - dis nous ce que tes echo t'affichent
delavega470 222Messages postés dimanche 9 février 2014Date d'inscription 21 juillet 2017 Dernière intervention - 5 juil. 2017 à 10:28
on me met ceux ci Warning: move_uploaded_file(image/vlcsnap-2017-03-03-09h23m18s102.png): failed to open stream: No such file or directory in C:\wamp\www\macom\pages\marque\send_marque.php on line 33
Répondre
jordane45 17904Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 24 juillet 2017 Dernière intervention - 5 juil. 2017 à 11:13
le repertoire image existe ?
Il y a quels droits dessus ?

Tu peux aussi, avant de faire le move, t'assurer que le fichier est bien uploadé
http://php.net/manual/fr/function.is-uploaded-file.php
Répondre
Donnez votre avis
Utile
+0
plus moins
le repertoire existe !
delavega470 222Messages postés dimanche 9 février 2014Date d'inscription 21 juillet 2017 Dernière intervention - 5 juil. 2017 à 12:09
j'ai fais le test le fichier est uploader
Répondre
Donnez votre avis
Utile
+0
plus moins
une idée?
jordane45 17904Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 24 juillet 2017 Dernière intervention - 5 juil. 2017 à 13:21
une idée ? .... Oui.... mais je vais commencer par aller manger ....

Ensuite.. je verrai pour "améliorer" ton code et voir ce qui pourrait bloquer.

En attendant .. tu peux déjà répondre à ça :
- Au passage... tu es en local sur ton ordi ou sur un serveur ?
- Tu utilises quoi comme serveur ?
- As tu vérifié les droits sur le répertoire image ?
- Où se trouve ce répertoire dans ton calorescence ?
- Où se situe ton script par rapport à ce répertoire ?
Répondre
Donnez votre avis
Utile
+0
plus moins
je suis en local sur mon ordi, j'utilise wampserver mon repertoir 'image' est juste au même endroit que mon script , juste a coté de send.php
jordane45 17904Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 24 juillet 2017 Dernière intervention - 5 juil. 2017 à 14:10
Et ton send.php il est où ? dans un sous répertoire ou à la racine de ton site ?
Répondre
Donnez votre avis
Utile
+0
plus moins
Essayes ça :
<style type="text/css">
.error{
   color: red;
  } 
.success{
   color:green;
 }
</style>

<?php
//-------------------------------------------------------//
// Fonction d'insertion en BDD
//-------------------------------------------------------//
  function insertFileIntoBdd($file_name,$nom_marq,$statu){
    global $bd;
    
    //verification du fichier existant 
      $sql = 'SELECT id from marque where img_marq="'.$file_name.'" ';
      $reponse = $bd->query($sql);
      $resultat = $reponse->fetch();
      if ($resultat) {
        $result['err'] = "<font color='red'>Cette image existe déjà...</font>";
      } else {
        $sql =  'INSERT INTO marque(nom_marq,im_marq,statu_img) VALUES (?,?,?)';
        $datas = array($nom_marq,$file_name,$statu);
        try{
          $req = $bd->prepare($sql);
          $req->execute($datas);
          $result = true;
        }catch(Exception $e){
          $result['err'] = " Erreur ! " .$e->getMessage();
        }
      }
      return $result;
  }
  

//-------------------------------------------------------//  
 // connexion à la bdd
 // ici tu remets le code de connexion à la bdd
//-------------------------------------------------------//


//-------------------------------------------------------//
// traitement du formulaire
//-------------------------------------------------------//
  if (isset($_POST['ok'])) {
    
    //récupération PROPRE des variables AVANT de les utiliser
    $files = !empty($_FILES) ? $_FILES : NULL;
    $F = !empty($_FILES["image"]) ? $_FILES["image"] : NULL;
    $nom_marq = !empty($_POST['nom_marq']) ? $_POST['nom_marq'] : NULL;
    
    //parametres :
     $rep_dest = "image/";
     $extension_autorisees = array('.jpeg','.JPEG','.png','.PNG','.gif','.GIF','.jpg','.JPG');
        
    
    if($F){
         
      $error = $F["error"];
      $file_name = $F['name'];
      $size = $F['size'];
      $file_tmp_name = $F['tmp_name'];
      
      if(!$error){           
        if(is_dir($re_dest) && is_writable($re_dest)){
          $files_dest = $re_dest.$file_name;       
          $file_extension = strrchr($file_name,".");  
          if(in_array($file_extension,$extension_autorisees)) {
            if($size  < 5000000){
              if(is_uploaded_file($file_tmp_name)){
                if (move_uploaded_file($file_tmp_name,$files_dest)){
                   $statu = 1;
                   $result_insert = insertFileIntoBdd($file_name,$nom_marq,$statu);
                   if($result_insert === true){
                     echo "<font color='green'>image envoyé avec succès</font>";
                   }else{
                     $err[] = $result['err'];
                   } 
                }else{
                  $err[] = "Impossible de déplacer le fichier $file_tmp_name  vers $files_dest";
                }
              }else{
                $err[] = "Une erreur est survenue durant l'upload du fichier";
              }
            }else{
              $err[] = "($size) : Taille maximum autorisée dépassée ";
            }
          }else{
            $err[] = "Extension $file_extension non autorisée ";
          }
        }else{
          $err[] = "Repertoire de destination ($rep_dest )absent ou droits insufisants";
        }   
      }
    }    
  }
 
 //Affichage des erreurs si il y en a :
  if(!empty($err)){
    foreach($err as $_r){
      echo "<font color='red'>".$_r."</font>";
    }
  } 

jordane45 17904Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 24 juillet 2017 Dernière intervention - 5 juil. 2017 à 16:21
et le dossier marque ... il se trouve où par rapport à la racine de ton site ????
car là :
$rep_dest = "image/";

voudrait dire que le dossier "image" se trouve A LA RACINE de ton site.

Donc.. soit tu passes par du chemin relatif ..... soit tu mets le chemin absolu en partant DE LA RACINE de ton site.
Donc :
Soit :
$rep_dest = "./image/";


Soit : (si le dossier marque est, lui même dans un dossier2 qui est lui dans un dossier dossier1 .. enfin.. tu comprends le principe..... )
$rep_dest = "dossier1/dossier2/marque/image/";
Répondre
jordane45 17904Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 24 juillet 2017 Dernière intervention - 5 juil. 2017 à 16:22
perso.. je préconise le chemin ABSOLU depuis la racine du site....
Répondre
delavega470 222Messages postés dimanche 9 février 2014Date d'inscription 21 juillet 2017 Dernière intervention - 5 juil. 2017 à 16:49
je crois c'est c'est bon mais j'ai maintenant ce message
Fatal error: Call to a member function fetch() on a non-object in C
Répondre
jordane45 17904Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 24 juillet 2017 Dernière intervention - 5 juil. 2017 à 16:55
Remplace les lignes
  $sql = 'SELECT id from marque where img_marq="'.$file_name.'" ';
  $reponse = $bd->query($sql);
  $resultat = $reponse->fetch();
 

par

try{
  $sql = 'SELECT id from marque where img_marq="'.$file_name.'" ';
  $req = $bd->prepare($sql);
  $req->execute($datas);
  $resultat = $req->fetch();
}catch(Exception $e){
  $result['err'] = " Erreur ! " .$e->getMessage();
}
Répondre
jordane45 17904Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 24 juillet 2017 Dernière intervention - 5 juil. 2017 à 16:56
NB... tu as bien remis le code de connexion à la bdd dans le code que je t'avais donné hein ???
Code que tu as corrigé en t'appuyant sur le lien que je t'avais donné : :http://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs
Répondre
Donnez votre avis
Utile
+0
plus moins
oui ça va maintenant mais la photo ne vas pas dans le dossier
jordane45 17904Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 24 juillet 2017 Dernière intervention - 5 juil. 2017 à 17:19
La photo ne va pas dans le dossier mais tu as aucun message d'erreur ???
Tu as quand même le message comme quoi ca c'est bien chargé et inséré dans la bdd ?
Répondre
Donnez votre avis
Utile
+0
plus moins
oui le nom de la photo est dans la bd mais la photo ne se trouve pas dans le dossier voulu et en plus c'est renommer 'image'HP.jepg il ya tjrs image devant associé au vrai nom
jordane45 17904Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 24 juillet 2017 Dernière intervention - 5 juil. 2017 à 17:28
Tu dis : dans le bon dossier... c'est à dire ? Elle se trouve ailleurs ??
Ensuite tu nous dis :c'est renommer 'image'HP.jepg ... c'est renommé où ? Dans la BDD ? Dans le répertoire où elle se trouve ????

Faudrait aussi que tu nous montres ton code (celui que tu as désormais avec toutes les corrections que nous avons effectué...) pour qu'on sache si tu n'aurais pas fait une erreur en recopiant.......
Répondre
delavega470 222Messages postés dimanche 9 février 2014Date d'inscription 21 juillet 2017 Dernière intervention - 5 juil. 2017 à 17:51
j'ai mis dans le dossier voulu c'est juste renommer dans le dossier pas dans la bd
Répondre
Donnez votre avis
Utile
+0
plus moins
 <style type="text/css">
.error
{
 color: red;
} 
.success
{
 color:green;
 }</style>
<?php  
try{
$bd =new PDO('mysql:host=localhost;
 dbname=macom_bd; charset=utf8', 'root', '');
// Activation des erreurs PDO
 $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
 $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
} catch(PDOException $e) {
    die('Erreur : ' . $e->getMessage());
}

  if (isset($_POST['ok'])) {
  

  if(!empty( $_POST['nom_marq']))
  {
    if (!empty($_FILES)) {
  $file_name = $_FILES["image"]["name"];
  $file_extension = strrchr($file_name,".");
  $file_tmp_name = $_FILES['image']['tmp_name'];
  $files_dest = 'marque/image/image'.$file_name;
  $extension_autorisees = array('.jpeg','.JPEG','.png','.PNG','.gif','.GIF','.jpg','.JPG');
  $nom_marq = $_POST['nom_marq'];
  $statu = 1;
  //test si l'extension fait partie des extensions autorisées
   if(in_array($file_extension,$extension_autorisees))
   { 
     if($_FILES["image"]["size"] < 5000000)
     {
      //envoi de l'image

    if (move_uploaded_file($file_tmp_name,$files_dest) AND $_FILES["image"]["error"]==0) {
      
      //verification de l'image existante
      $req =  'SELECT id_marq from marque where img_marq="'.$file_name.'" ';
      $reponse = $bd->query($req);
     // echo $req;
      $resultat = $reponse->fetch();
      if ($resultat) {
        echo "<font color='red'>Cette image existe déjà...</font>";
      } else {
        $req = $bd->prepare( 'INSERT INTO marque(nom_marq,img_marq,statu_marq) VALUES (?,?,?)');
      $req->execute(array($nom_marq,$file_name,$statu));
      echo "<font color='green'>image envoyé avec succès</font>";
      }
      
    }  else {
      echo "<font color='red'>Une erreur est survenue lors de l'envoi de l'image</font>";
    }
  } else {
      echo "<font color='red'> Taille de l'image doit être inferieur a 5Mo </font>";
    }
    

   } else {
    echo "<font color='red'>seul les images jpeg,jpg,gif et png sont autorisés...</font>";
   }
} 
   else
      {
    echo "<span class ='error'>Veuillez remplir  les champs !</span>";
        }
    
    }
   

      }

     else
      {
    echo "<span class ='error'>Veuillez remplir  les champs !</span>";
        } 
?>
jordane45 17904Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 24 juillet 2017 Dernière intervention - 5 juil. 2017 à 17:57
Regarde bien ton code
$files_dest = 'marque/image/image'.$file_name;
Répondre
delavega470 222Messages postés dimanche 9 février 2014Date d'inscription 21 juillet 2017 Dernière intervention - 5 juil. 2017 à 18:05
merci pour coup d'oeil !!
Répondre
jordane45 17904Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 24 juillet 2017 Dernière intervention - 5 juil. 2017 à 18:18
par contre je vois que je t'ai fait un code propre ... et que finalement tu as remis le tien... c'est dommage quand même...
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !