[RESOLU] Création d'un album photos en PHP

Eléphant du PHP | 161 Messages

22 mars 2017, 11:54

Bonjour à tous, mon problème n'est pas très long à expliquer : j'essaie de permettre à mon client, via son administration, de créer un album photos, et ce en php.
Je parviens à créer un sous-dossiers dans un répertoires précis, mais je ne parviens pas à y stocker plusieurs photos.

Voici mon formulaire :

Code : Tout sélectionner

<form id="creAlbum" name="creAlbum" method="POST" action="#" enctype="multipart/form-data" role="form"> <div class="form-group"><label class="control-label">Nom de l'album</label><input type="text" name="nameAlbum" class="form-control underlined" required></div> <div class="form-group"><label class="control-label">Contenu</label><input name="pictures[]" type="file" class="form-control underlined" multiple></div> <div class="modal-footer"> <input type="submit" value="Créer" name="creAlbum" class="btnCreated btn btn-primary"> <button type="button" class="btn btn-secondary" data-dismiss="modal">Annuler</button> </div> </form>
Et son code PHP associé :

Code : Tout sélectionner

<?php if(isset($_POST['creAlbum'])) { $nameAlbum = $_POST['nameAlbum']; mkdir("./pics/".$nameAlbum."/", 0777); $dossier = "./pics/".$nameAlbum; $taille_maxi = 10000000; $extensions = array('.jpg', '.jpeg', '.png'); $nbfichiersEnvoyes = count($fichier_temp); for($i=0; $i<$nbfichiersEnvoyes; $i++) { $fichier= basename($_FILES['pictures']['name'][$i]); $fichier_temp= $_FILES['pictures']['tmp_name'][$i]; $taille= filesize($_FILES['pictures']['tmp_name'][$i]); $extension= strrchr($_FILES['pictures']['name'][$i], '.'); if(!in_array($extension, $extensions)) $erreur= '<span class="non">Vous devez uploader le fichier'.$i.' de type JPEG, JPG, ou PNG.</span>'; if($taille>$taille_maxi) $erreur= 'Le fichier'.$i.' est trop gros.'; if(!isset($erreur)) { $fichier = strtr($fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy'); $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier); if(move_uploaded_file($fichier_temp, $dossier. $fichier)) echo'<span class="okdac">Upload'.$i.' effectué avec succès !</span>'; else echo'<span class="non">Echec de l\'upload'.$i.' !</span>'; } else echo $erreur; } } ?>
Pouvez-vous m'aider à corriger mon erreur s'il vous plaît ? :(
Une bonne journée à tous !

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

22 mars 2017, 11:58

Bonjour,

A quel endroit ça ne fonctionne pas comme prévu dans ton code ?
Y a-t-il un message d'erreur ?
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 161 Messages

22 mars 2017, 12:07

Bonjour à vous,
Ça ne fonctionne pas à partir du moment où j'essaie d'insérer des images dans le dossier préalablement créé.
J'avais le message dl'erreur suivant : "Notice: Undefined variable: fichier_temp in C:\UwAmp\www\leSporting\admin\pictures-insert.php on line 175".

J'ai donc remplacé cette fameuse ligne par :

Code : Tout sélectionner

$nbfichiersEnvoyes = count($_FILES['pictures']['tmp_name'])
Et maintenant là où ça ne fonctionne pas comme je veux c'est que les images sont bien téléchargées, mais pas dans le bon dossier, c'est-à-dire qu'elles se placent directement dans le dossier racine "pics" et non pas dans celui créé préalablement, pourtant le chemin de dossier spécifié me semble correct ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

22 mars 2017, 12:25

Fais un echo de $dossier.$fichier juste avant ton move_uploaded_file() pour voir si tes variables sont bonnes.
Je n'ai pas vérifié mais il se pourrait qu'il manque un slash entre le nom du dossier et le fichier.
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 161 Messages

22 mars 2017, 12:33

Et bien merci.. Voilà où était le soucis !