[PHP] Précédent/Suivant dans une galerie d'images

Précédent/Suivant dans une galerie d'images [PHP] - PHP - Programmation

Marsh Posté le 30-05-2009 à 18:56:10    

Bonsoir,
 
J'aimerais créer des liens "image précédente" et "image suivante" sur la page qui affiche une image d'une catégorie particulière. Le problème est que mes id sont le plus souvent anarchiques (on peut passer de 163 à 168 dans une même catégorie par exemple), ce qui m'empêche de faire un bête lien vers "id+1" ou "id-1".
 
Je pense que le plus simple serait d'assigner à chaque image d'une catégorie un numéro afin de créer une suite logique et d'utiliser ce "-1" ou "+1", mais je ne vois pas trop comment faire...
 
Merci d'avance :)


Message édité par Brendeldas le 30-05-2009 à 18:56:19

---------------
Plaît-il ?
Reply

Marsh Posté le 30-05-2009 à 18:56:10   

Reply

Marsh Posté le 30-05-2009 à 21:51:14    

Quand tu enregistres l'image, tu demandes la catégorie et quand tu procèdes à l'enregistrement dans la base tu fais ça :
 
<?php
$categorie = $_POST['categorie'];
 
$sql = mysql_query('SELECT * FROM TABASE WHERE cat like "'.$categorie.'%" ORDER BY id DESC LIMIT 0, 1;'); // Tu prends le dernier enregistrement de la catégorie sélectionnée
$data = mysql_fetch_array($sql);
 
...  
?>
 
Tu "coupes" le $data['cat'] au niveau de la catégorie sélectionnée (ex : C|12). Tu récupéres le 12, tu ajoutes 1 et tu l'envoies comme catégorie
 
J'espère que tu as compris ;)

Reply

Marsh Posté le 31-05-2009 à 11:51:51    

Euh... non :D
 
D'après ce que j'ai compris, ton astuce est basée sur le même principe que l'id automatiquement générée à chaque enregistrement, donc j'aurai le même problème : si j'ajoute 3 images et que je supprime celle du milieu, il y aura un décalage entre les 2 restantes.


---------------
Plaît-il ?
Reply

Marsh Posté le 31-05-2009 à 20:20:51    

ce que j'ai fait dans une galerie, c'est d'enregistrer la date de publication de l'image.
p.ex., une table comme ceci :
images
______
id
id_cat
date_pub
titre
description
fichier
 
comme ça tu peux faire une requête ressemblant à ceci (en imaginant que l'image actuelle soit d'ID XXX et de date_pub YYY, dans la catégorie ZZZ) :

Code :
  1. $query = sprintf("SELECT id FROM images WHERE (id_cat='%d' AND date_pub > '%d') LIMIT 1;", ZZZ, YYY);
  2. DB-> execute($query); // selon ta façon de faire tes requêtes


 
et là tu t'en fous d'avoir des trous dans les ID, puisque pour cette même catégorie, tu demandes l'image (LIMIT 1 = 1 seule ligne retournée) dont la date de publication est juste supérieure.
Chez moi la date_pub est un timestamp Unix.
 
Faudrait vérifier mais à dates égales il te retournera le bon ID suivant.


Message édité par NewsletTux le 31-05-2009 à 20:21:21

---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 01-06-2009 à 13:24:27    

J'ai un poil simplifié ton idée en allant directement chercher l'id supérieure à celle de l'image actuelle, et ça marche impeccable :
 

Code :
  1. $request34 = mysql_query('SELECT id FROM images WHERE manga="' . $manga . '" AND id > '.$id_image.'  LIMIT 1 ');
  2. $data34 = mysql_fetch_array($reponse34);


 
C'était vraiment con comme une blague de maternelle, vu qu'il suffisait d'utiliser le signe ">" pour résoudre tous les problèmes de discontinuité...
 
En tout cas, merci à tous pour votre aide :)


---------------
Plaît-il ?
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed