Page 1 sur 1
Liste déroulante pour galerie
Posté : 19 avr. 2007, 09:56
par webide
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
Posté : 19 avr. 2007, 11:19
par x0s
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
Posté : 19 avr. 2007, 12:43
par Ryle
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

Posté : 19 avr. 2007, 22:44
par webide
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
Posté : 22 avr. 2007, 12:35
par webide
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
Posté : 22 avr. 2007, 14:55
par aelurus
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}
Posté : 24 avr. 2007, 15:32
par webide
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>
Posté : 24 avr. 2007, 21:09
par webide
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à
comment envoyer la personne et que la galerie s'ouvres avec les photos choisies
Posté : 25 avr. 2007, 10:25
par Ryle
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

Posté : 25 avr. 2007, 15:15
par webide
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

Posté : 25 avr. 2007, 15:18
par Ryle
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

)
Posté : 25 avr. 2007, 15:35
par webide
Et bien les photos sont dans upload/up/$pseudo/ et la galerie dans upload/up/
Posté : 25 avr. 2007, 16:15
par webide
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>