Liste déroulante pour galerie

Eléphant du PHP | 96 Messages

19 avr. 2007, 09:56

Bonjour,
J'ais une galerie photo ou les dossiers pour chaque membre sont créés automatiquement à l'inscription.
Je cherche à voir comment il est possible de créer une liste déroulante répertoriant tous les dossiers créés pour que l'on puisses chercher la galerie d'un membre précis.
Si vous aviez un tutoriel sur le sujet cela m'aiderais beaucoup.
Merci d'avance
webide

x0s
Eléphanteau du PHP | 22 Messages

19 avr. 2007, 11:19

Bonjour,

Si tu stockes la liste de tes dossiers sur une base MySQL, un fichier ou ailleurs, et bien tu fais en sorte de récupérer cet ensemble de donnée dans un tableau (tu n'indique rien à ce sujet).

Ensuite en utilisant les boucles tu crée ta liste en passant en revue tout le tableau et en injectant les éléments un par un dans ta liste:

Voici une page sur les structure des listes
http://www.lehtml.com/htmlplus/fmliste.htm

En ce qui concerne la récupération des données et l'extraction, tu ne donnes aucunes informations.

Bye

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

19 avr. 2007, 12:43

Sinon, avec les fonctions sur les dossiers comme opendir() et readdir() tu peux lister le contenu d'un répertoire et en extraire les noms des dossiers. Si chaque utilisateur à son dossier, il ne te reste plus qu'à les présenter dans ta liste déroulante :)

Regarde dans la FAQ, je crois qu'il y a un topic sur les systemes de fichiers, sinon la doc des fonctions te donneras de bons exemples :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 96 Messages

19 avr. 2007, 22:44

Les dossiers sont créés automatiquement et stockés dans un dossier centrale. Il n'y a pas de base mysql.
En fin de compte les dossiers sont tous dans upload/up/dossiers

Eléphant du PHP | 96 Messages

22 avr. 2007, 12:35

J'ais bien lu le tuto sur readdir() seulement il me marques tous ce qui se trouve dans le dossier (mêmme les fichiers php) et surtout je ne vois pas comment faire en sorte de créer la liste et de permettre de selectionner le dossier de son choix

Eléphant du PHP | 177 Messages

22 avr. 2007, 14:55

Il faut faire un test pour éviter de traiter ce que tu ne veux pas en autre ici tout ce qui n'est pas un dossier.
		$handle=opendir($dossier);
		while (false !== ($file = readdir($handle))){
			if ($file != "." && $file != ".."{//traitement}

Eléphant du PHP | 96 Messages

24 avr. 2007, 15:32

J'ais résolu une partie du problème en créant la liste déroulante mais je n'arrives pas à trouver comment faire pour que cela deviennent des liens.
Pour la liste déroulante j'ais fait:

Code : Tout sélectionner

<select nom="cequetuveux"> <?php if ($handle = opendir('upload/up/')) { echo "Files:\n"; while (false !== ($file = readdir($handle))) { echo'<option value="'.$file.'">'.$file.'</option>'; } while ($file = readdir($handle)) { echo "$file\n"; } closedir($handle); } ?> </select>

Eléphant du PHP | 96 Messages

24 avr. 2007, 21:09

J'ais déjà bien avancé avec la liste déroulante car maintenant elle fonctionnes et me rediriges vers le dossier souhaité.
Voici d'ailleurs le code

Code : Tout sélectionner

<html> <head> <script> function Lien() { i = document.Choix.Liste.selectedIndex; if (i == 0) return; url = document.Choix.Liste.options[i].value; parent.location.href = url; } </script> <title></title> </head> <body> <FORM NAME="Choix"> <SELECT NAME="Liste" onChange="Lien()"> <?php if ($handle = opendir('upload/up/')) { echo "Files:\n"; while (false !== ($file = readdir($handle))) { echo'<option value="'.$file.'">'.$file.'</option>'; } while ($file = readdir($handle)) { echo "$file\n"; } closedir($handle); } ?> </select> </FORM>
et pour le visionnage (car pour le moment il m'ouvres le dossier mais sans fichier pour afficher les photos ça bloques) j'ais pensé utiliser un fichier interactif pour les visionner

Code : Tout sélectionner

<html> <head> </head> <body background="images/fd.gif"> <?php include("images.class.php"); ?> <?php $images = new images(); $images->repertoire = '$pseudo'; $images->nb_par_ligne = 3; $images->afficher_liste(); ?> </body> </html>
et en dernier voici le fichier images.class.php gérant l'affichage

Code : Tout sélectionner

<?php class images { var $repertoire; var $nb_par_ligne; function ajouter_image($image,$nom) { if (is_dir($this->repertoire)) { if (copy($image, $this->repertoire . "/" . $nom)) return true; else return false; } else return false; } function lister_repertoire() { $liste = array(); if (is_dir($this->repertoire)) { if ($pointeur = opendir($this->repertoire)) { while (($fichier = readdir($pointeur)) !== false) { if (!is_dir($this->repertoirte . "/" . $fichier)) { $liste[] = $fichier; } } closedir($pointeur); return $liste; } else return false; } else return false; } function liste_select() { $liste = $this->lister_repertoire(); for ($i = 0; $i < count($liste); $i++) { echo " <option value=\"$this->repertoire/$liste[$i]\">$liste[$i]</option>\n"; } } function afficher_liste() { $liste = $this->lister_repertoire(); echo "<table summary=\"table d'images\">\n"; for ($i = 0; $i < count($liste); $i++) { $nom = explode(".", $liste[$i]); $nom = str_replace("_", " ", $nom[0]); $nom = str_replace("-", " ", $nom); $nom = strtoupper(substr($nom, 0, 1)) . substr($nom, 1); if (round($i/$this->nb_par_ligne) == ($i/$this->nb_par_ligne)) echo " <tr>\n"; echo " <td align=\"center\">" . $this->afficher_image($liste[$i]) . "<br></td>\n"; if (round(($i+1)/$this->nb_par_ligne) == (($i+1)/$this->nb_par_ligne) || ($i+2) > count($liste)) echo " </tr>\n"; } echo "</table>\n"; } function afficher_image($fichier) { return "<img width=\"250px\" src=\"" . $this->repertoire . "/" . $fichier . "\" alt=\"" . $fichier . " - " . round((filesize($this->repertoire. "/" . $fichier)/1024), 2) . " ko\">"; } } ?>
Le problème vient surtout de là

Code : Tout sélectionner

echo'<option value="'.$file.'">'.$file.'</option>';
comment envoyer la personne et que la galerie s'ouvres avec les photos choisies

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

25 avr. 2007, 10:25

Attention ici :
$images->repertoire = '$pseudo';
Une variable entre apostrophes n'est pas interprétée et il n'est absolument pas utile de mettre des guillemets autour d'une variable pour avoir accès à sa valeur :
$images->repertoire = $pseudo;
Ensuite pour connaitre le pseudo de l'utilisateur, il te suffit soit de récupérer l'url de la page ($_SERVER['PHP_SELF']) et d'y retrouver le pseudo de l'utilisateur. Soit, plus simplement dans l'url, de passer le pseudo en paramètre et de venir le récupérer directement :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 96 Messages

25 avr. 2007, 15:15

Merci pour $pseudo mais par contre, aurais tu un ewemple précis pour ($_SERVER['PHP_SELF']) je t'avouerais franchement que je ne sais pâs ou le placer :oops:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

25 avr. 2007, 15:18

Euh... bah non.. j'ai pas d'exemple précis.. tout dépend de ton arborescence... dans un premier temps contente toi de l'afficher et de voir les valeurs qu'il va prendre en fonction de l'url ouverte :)

Il faudra ensuite trouver une règle permettant d'extraire juste le pseudo de la chaine :) (avec un explode('/'), un substr() ou autre :))
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 96 Messages

25 avr. 2007, 15:35

Et bien les photos sont dans upload/up/$pseudo/ et la galerie dans upload/up/

Eléphant du PHP | 96 Messages

25 avr. 2007, 16:15

Dans la liste déroulante j'ais fais

Code : Tout sélectionner

<html> <head> <script> function Lien() { i = document.Choix.Liste.selectedIndex; if (i == 0) return; url = document.Choix.Liste.options[i].value; parent.location.href = url; } </script> <title></title> </head> <body> <FORM NAME="Choix"> <SELECT NAME="Liste" onChange="Lien()"> <?php if ($handle = opendir('upload/up/')) { echo "Files:\n"; while (false !== ($file = readdir($handle))) { echo'<option value="upload/up/galerie.php">'.$file.'</option>'; } while ($file = readdir($handle)) { echo "$file\n"; } closedir($handle); } ?> </select> </FORM> </body> </html>
et pour la galerie (c'est surement une énorme connerie)

Code : Tout sélectionner

<?php session_register($pseudo); header("Location: ".$_SERVER["PHP_SELF"]); die(); } ?> <html> <head> </head> <body background="images/fd.gif"> <?php include("images.class.php"); ?> <?php $images = new images(); $images->repertoire = $pseudo; $images->nb_par_ligne = 3; $images->afficher_liste(); ?> </body> </html>