Je suis en train d'essayer de construire une petite photothèque en php. J'ai donc un répertoire "albums", qui lui-même contient des sous-répertoires thématiques (un répertoire = un album de photos). Et ces répertoires thématiques contiennent donc les photos (en jpg).
Et je rencontre un petit souci de codage php pour générer les liens "précédent" et "suivant" lors de l'affichage d'une photo, ne pouvant pas me baser sur l'id de la table sql (des photos peuvent être enlevées ou ajoutées dans les albums, et donc les id ne se suivent plus), ni sur le nom de la photo (qui est aléatoire).
Donc pour arriver à trouver une logique entre l'ordre des miniatures dans l'album et l'odre des liens "suivant" et "précédent", j'ai décidé de classer (arbitrairement) les miniatures par ordre alphabétique du nom de fichier.
A partir de là, il faut que j'arrive à trouver un moyen d'obtenir, à partir du nom de fichier de la photo en cours, le nom du fichier précédent et le nom du fichier suivant. Je suis parti sur la possibilité de lister le contenu du répertoire contenant les photos et de classer ce contenu dans un tableau. Ce qui donne le code ci-dessous
Code :
// créer un tableau pour stocker le contenu du répertoire
$tab = array();
// chemin vers le répertoire
$rep = "albums/fleurs";
// mettre le contenu du répertoire dans le tableau
$listRep=opendir($rep);
$i=0;
while ($file = readdir($listRep))
{
if ($file != "." && $file != ".." )
{
$tab[$i] = $file;
$i++;
}
}
// fermer le répertoire
closedir($listRep);
C'est très bien (enfin j'espère...), mais je ne sais pas comment faire pour récupérer à partir de là le nom du fichier précédent et du fichier suivant, sachant que le nom de la photo en cours est contenu dans une variable GET.
J'ai un peu progressé ; j'arrive maitenant à récupérer la place du fichier dans le tableau grâce à un array_search ; je peux donc identifier la place précédente et la place suivante... Mais comment après obtenir les valeurs contenues dans le tableau à ces postions ?
Si vous pouviez éclairer ma lanterne
Merci d'avance
Message édité par marsien le 30-06-2006 à 14:23:11
C'est bon, j'ai trouvé, parfois je ne vais très bien( ou je dors ), amis c'est franchement pas compliqué de faire une requête de valeur dans un tableau...
Merci de votre aide ; quand le script sera complêt je le mettrais ici avec un titre approprié ; ça peut toujours servir
Aller faire un tour à la machine à café par exemple peut être suffisant pour débloquer un problème (informatique ou autre) apparament insoluble Entre la pause-déjeuner, le gros soucis de Marsien a disparu.
A croire que les soucis prennent des pauses aussi )
// créer un tableau pour stocker le contenu du répertoire
$tab = array();
// chemin vers le répertoire
$retour = mysql_query('SELECT categorie2 FROM phototheque WHERE nom="' . $_GET['photo'] . '"');
$donnees = mysql_fetch_array($retour);
$rep = 'albums/' . $donnees['categorie2'];
// mettre le contenu du répertoire dans le tableau
$listRep=opendir($rep);
$i=0;
while ($file = readdir($listRep))
{
if ($file != "." && $file != ".." )
{
//$tab[$i][0] = $i;
$tab[$i] = $file;
$i++;
}
}
// on trie le tableau par ordre croissant
sort($tab);
// on récupère le nom de la photo actuelle dans l'url
$photo = $_GET['photo'];
// on cherche cette photo dans le tableau et on récupère sa position
$photoCourante = array_search($photo, $tab);
// on calcule les postions des photos précédentes et suivantes
$prec = $photoCourante - 1;
$suiv = $photoCourante + 1;
// page de l'album sur laquelle se trouve la photo suivante ou la photo précédente (dans le cas où on veut afficher un nombre fixe de photos par pages ; ici 12)
$pageSuiv = ceil(($suiv + 1) / 12);
$pagePrec = ceil(($prec + 1) / 12);
// on compte le nombre d'entrée dans le tableau
$nombre = count($tab);
// on garde la photo précédente si sa position n'est pas avant 0 !