Uploader (et renommer) plusieurs photos dans le serveur
Résolu
miltonis
Messages postés
234
Date d'inscription
Statut
Membre
Dernière intervention
-
miltonis Messages postés 234 Date d'inscription Statut Membre Dernière intervention -
miltonis Messages postés 234 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Même si je ne suis pas calé en développement, j'essaie de créer un formulaire qui permet d'uploader plusieurs photos sur le serveur et du texte dans la base de données.
Pour le texte, aucun souci. Pour uploader UNE photo aussi, j'y arrive bien.
Dois-je utiliser une boucle while ou for ou foreach ?
Si oui, comment récupérer les informations ?
Je précise que je ne cherche pas à utiliser la fonction "Multiple". Même si les fichiers sont uploadés dans le même formulaire, l'utilisateur doit utiliser des champs "File upload" séparés.
Avec le code ci-dessous, l'upload fonctionne mais seul le renommage du premier fichier fonctionne. Le deuxième (et sûrement les suivants aussi) sont mal renommés. Exemple pour le deuxième :
78_One Plus_Nouveau test_FaceProduct_pic03.jpgpic04.jpg
Voici le code HTML :
Et le code PHP :
Merci de votre soutien !
Même si je ne suis pas calé en développement, j'essaie de créer un formulaire qui permet d'uploader plusieurs photos sur le serveur et du texte dans la base de données.
Pour le texte, aucun souci. Pour uploader UNE photo aussi, j'y arrive bien.
- Ce que je n'arrive pas à faire, c'est uploader PLUSIEURS photos en un seul envoi de formulaire.
Dois-je utiliser une boucle while ou for ou foreach ?
Si oui, comment récupérer les informations ?
Je précise que je ne cherche pas à utiliser la fonction "Multiple". Même si les fichiers sont uploadés dans le même formulaire, l'utilisateur doit utiliser des champs "File upload" séparés.
- Je précise que je veux renommer les fichiers lors de l'upload.
Avec le code ci-dessous, l'upload fonctionne mais seul le renommage du premier fichier fonctionne. Le deuxième (et sûrement les suivants aussi) sont mal renommés. Exemple pour le deuxième :
78_One Plus_Nouveau test_FaceProduct_pic03.jpgpic04.jpg
Voici le code HTML :
Importer les photos du produit: <label for="fileFA" class="label-file" style="cursor:pointer; color:#00b1ca; font-weight:bold;">Couverture/face du produit</label> <input id="fileFA" class="input-file" type="file" name="photoFA" style="display: none;"> <!--<input type="file" name="photo"><br>--> <label for="fileNV" class="label-file" style="cursor:pointer; color:#00b1ca; font-weight:bold;">Tableau nutritionnel du produit</label> <input id="fileNV" class="input-file" type="file" name="photoNV" style="display: none;">
Et le code PHP :
error_reporting(E_ALL); // Then retrieve all the other information from the form: $productname = isset($_POST['productname']) ? $_POST['productname'] : NULL; $productbrand = isset($_POST['productbrand']) ? $_POST['productbrand'] : NULL; $addername = isset($_POST['addername']) ? $_POST['addername'] : NULL; $adderemail = isset($_POST['adderemail']) ? $_POST['adderemail'] : NULL; // paramètres de connexion $cbnserver = "xxxxxx"; $cbnuser = "xxxxxxxxx"; $cbnpass = "xxxxxxxxx"; $cbndbname = "xxxxxxxxxxxxx"; // Requête d'insertion dans la base $dbco = new PDO("mysql:host=$cbnserver;dbname=$cbndbname", $cbnuser, $cbnpass); $dbco->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $req = $dbco->prepare('INSERT INTO `cbnadd_newproduct` (productname, productbrand, addername, adder_email) VALUES(:productname,:productbrand,:addername,:adder_email)'); $req->execute(array( 'productname' => $productname, 'productbrand' => $productbrand, 'addername' => $addername, 'adder_email' => $adderemail )); $lineid = $dbco->lastInsertId() ; // Designate the directory where the images will be saved with this code: $targetFA = "images/". $lineid ."_". $productbrand ."_". $productname ."_FaceProduct_"; $targetFA = $targetFA . basename( $_FILES['photoFA']['name']); $targetNV = "images/". $lineid ."_". $productbrand ."_". $productname ."_FaceProduct_"; $targetNV = $targetFA . basename( $_FILES['photoNV']['name']); // This writes the photo to the server $namefileFA = basename( $_FILES['photoFA']['name']); $namefileFA = $lineid ."_". $productbrand ."_". $productname ."_". $namefileFA; $namefileNV = basename( $_FILES['photoFA']['name']); $namefileNV = $lineid ."_". $productbrand ."_". $productname ."_". $namefileNV; if(move_uploaded_file($_FILES['photoFA']['tmp_name'],$targetFA) & move_uploaded_file($_FILES['photoNV']['tmp_name'],$targetNV)) { // This code tells you if it is all ok or not. echo "<br><br>The file ". $namefileFA. " and has been uploaded, and your information has been added to the directory<br>"; echo "<br><br>The file ". $namefileNV. " has been uploaded, and your information has been added to the directory<br>"; } else { echo "<br><br>Sorry, there was a problem uploading your file."; }
Merci de votre soutien !
A voir également:
- Uploader (et renommer) plusieurs photos dans le serveur
- Partager des photos - Guide
- Renommer plusieurs fichiers en même temps - Guide
- Changer serveur dns - Guide
- Toutes mes photos - Guide
- Serveur entrant et sortant - Guide
2 réponses
Ton erreur est là
Perso, le code, je l'écrirai comme ceci :
Au passage, je t'invite à lire ceci
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
et ça :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
.
$namefileNV = basename( $_FILES['photoFA']['name']);
Perso, le code, je l'écrirai comme ceci :
<?php error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); // Then retrieve all the other information from the form: $productname = !empty($_POST['productname']) ? $_POST['productname'] : NULL; $productbrand = !empty($_POST['productbrand']) ? $_POST['productbrand'] : NULL; $addername = !empty($_POST['addername']) ? $_POST['addername'] : NULL; $adderemail = !empty($_POST['adderemail']) ? $_POST['adderemail'] : NULL; $photoFA = !empty($_FILES['photoFA']) ? $_FILES['photoFA'] : NULL; $photoNV = !empty($_FILES['photoNV']) ? $_FILES['photoNV'] : NULL; // paramètres de connexion $cbnserver = "xxxxxx"; $cbnuser = "xxxxxxxxx"; $cbnpass = "xxxxxxxxx"; $cbndbname = "xxxxxxxxxxxxx"; //Connexion à la bdd try{ $dbco = new PDO("mysql:host=$cbnserver;dbname=$cbndbname", $cbnuser, $cbnpass); $dbco->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $dbco->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); } // Requête d'insertion dans la base $sql = 'INSERT INTO `cbnadd_newproduct` (productname, productbrand, addername, adder_email) VALUES(:productname,:productbrand,:addername,:adder_email)'; $datas = array( ':productname' => $productname, ':productbrand' => $productbrand, ':addername' => $addername, ':adder_email' => $adderemail ); try{ $req = $dbco->prepare($sql); $req->execute($datas); $lineid = $dbco->lastInsertId() ; }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } // Designate the directory where the images will be saved with this code: $uploadDir = "images/". $lineid ."_". $productbrand ."_". $productname ."_FaceProduct_"; $uid = $lineid ."_". $productbrand ."_". $productname; // This writes the photo to the server $namefileFA = $uid."_". basename( $photoFA['name']); $targetFA = uploadDir . $photoFA['name']; if(move_uploaded_file($photoFA['tmp_name'],$targetFA){ echo "<br><br>The file ". $namefileFA. " and has been uploaded, and your information has been added to the directory<br>"; } else { echo "<br><br>Sorry, there was a problem uploading your file." . $photoFA['name']; } $namefileNV =$uid."_". basename( $photoNV['name']); $targetNV = uploadDir . $photoNV['name']; if(move_uploaded_file($photoNV['tmp_name'],$targetNV)) { echo "<br><br>The file ". $namefileNV. " has been uploaded, and your information has been added to the directory<br>"; } else { echo "<br><br>Sorry, there was a problem uploading your file." . $photoNV['name']; }
Au passage, je t'invite à lire ceci
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
et ça :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
.
Merci pour ton aide Jordane :)
JE vais lire les liens de ce pas ^^