Se connecter avec
S'enregistrer | Connectez-vous

[Résolu ; php] Récupérer les valeurs d'un tableau

Dernière réponse : dans Programmation
Expert Programmation

Salut,

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
  1. // créer un tableau pour stocker le contenu du répertoire
  2. $tab = array();
  3.  
  4. // chemin vers le répertoire
  5. $rep = "albums/fleurs";
  6.  
  7. // mettre le contenu du répertoire dans le tableau
  8. $listRep=opendir($rep);
  9. $i=0;
  10. while ($file = readdir($listRep))
  11. {
  12. if ($file != "." && $file != "..")
  13. {
  14. $tab[$i] = $file;
  15. $i++;
  16. }
  17. }
  18.  
  19. // fermer le répertoire
  20. 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.

[:edit] 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 :) 
Lassé par la pub ? Créez un compte
Expert Programmation

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 :) 
Expert Programmation

( Avis à tout le monde.

Aller faire un tour à la machine à café par exemple peut être suffisant pour débloquer un problème (informatique ou autre) apparament insoluble :o  Entre la pause-déjeuner, le gros soucis de Marsien a disparu. :D 

A croire que les soucis prennent des pauses aussi :lol:  )
Expert Programmation

Salut,

Voilà ce que j'ai fait.
  1. <?php
  2. // créer un tableau pour stocker le contenu du répertoire
  3. $tab = array();
  4.  
  5. // chemin vers le répertoire
  6. $retour = mysql_query('SELECT categorie2 FROM phototheque WHERE nom="' . $_GET['photo'] . '"');
  7. $donnees = mysql_fetch_array($retour);
  8. $rep = 'albums/' . $donnees['categorie2'];
  9.  
  10. // mettre le contenu du répertoire dans le tableau
  11. $listRep=opendir($rep);
  12. $i=0;
  13. while ($file = readdir($listRep))
  14. {
  15. if ($file != "." && $file != "..")
  16. {
  17. //$tab[$i][0] = $i;
  18. $tab[$i] = $file;
  19. $i++;
  20. }
  21. }
  22.  
  23. // on trie le tableau par ordre croissant
  24. sort($tab);
  25.  
  26. // on récupère le nom de la photo actuelle dans l'url
  27. $photo = $_GET['photo'];
  28.  
  29. // on cherche cette photo dans le tableau et on récupère sa position
  30. $photoCourante = array_search($photo, $tab);
  31.  
  32. // on calcule les postions des photos précédentes et suivantes
  33. $prec = $photoCourante - 1;
  34. $suiv = $photoCourante + 1;
  35.  
  36. // 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)
  37. $pageSuiv = ceil(($suiv + 1) / 12);
  38. $pagePrec = ceil(($prec + 1) / 12);
  39.  
  40. // on compte le nombre d'entrée dans le tableau
  41. $nombre = count($tab);
  42.  
  43. // on garde la photo précédente si sa position n'est pas avant 0 !
  44. if($prec >= 0)
  45. {
  46. $prec = '<a href="phototheque.php?categorie='. $_GET['categorie'] . '&page=' . $pagePrec . '&photo=' . $tab[$prec] . '" title="photo précédente">Photo précédente</a>';
  47. }
  48. else
  49. {
  50. $prec = 'Photo précédente';
  51. }
  52.  
  53. // on garde la photo suivante si sa position n'est pas après la dernière !
  54. if($suiv < $nombre)
  55. {
  56. $suiv = '<a href="phototheque.php?categorie='. $_GET['categorie'] . '&page=' .$pageSuiv . '&photo=' . $tab[$suiv] . '" title="photo suivante">Photo suivante</a>';
  57. }
  58. else
  59. {
  60. $suiv = 'Photo suivante';
  61. }
  62.  
  63. // fermer le répertoire
  64. closedir($listRep);
  65. ?>


Voilà, en espérant que ça puisse t'aider :jap: 
Lassé par la pub ? Créez un compte