Problème pour telecharger l'image
Résolu
delavega470
Messages postés
298
Date d'inscription
Statut
Membre
Dernière intervention
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
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
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>"; } } ?>
A voir également:
- Problème pour telecharger l'image
- Télécharger clavier arabe - Télécharger - Divers Web & Internet
- Télécharger instagram pour pc - Télécharger - Divers Communication
- Telecharger word 2013 - Télécharger - Traitement de texte
- Telecharger ccleaner - Télécharger - Nettoyage
- Télécharger opera mini pour pc - Télécharger - Navigateurs
8 réponses
Bonjour,
1 - commence par ça :https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
2 - dis nous ce que tes echo t'affichent
1 - commence par ça :https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
2 - dis nous ce que tes echo t'affichent
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 ?
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 ?
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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>"; } }
et le dossier marque ... il se trouve où par rapport à la racine de ton site ????
car là :
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 :
Soit : (si le dossier marque est, lui même dans un dossier2 qui est lui dans un dossier dossier1 .. enfin.. tu comprends le principe..... )
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/";
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
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.......
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.......
<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>"; } ?>
Il y a quels droits dessus ?
Tu peux aussi, avant de faire le move, t'assurer que le fichier est bien uploadé
https://www.php.net/manual/fr/function.is-uploaded-file.php