matsa
Aug 17 2004, 01:06 PM
Bonjour,
J'ai créée une table "Projet" dans une base MySQL. Cette table contient différentes données relatives à différents projets (id, nom du projet, date du projet, description...). J'ai également une interface d'admin qui me permet de modifier/ajouter/supprimer un projet de la table. Jusqu'ici rien de bien original.
Lors de la consultation de ces projets dans la page web (partie public), je veux faire une navigation du genre :
<< projet précédent | retour à la liste | projet suivant >>
... pour pouvoir passer d'un projet à un autre sans revenir obligatoirement à la liste des projets.
Et là il y a un petit truc sur lequel je bloque. Je pensais incrémenter (ou décrémenter) l'id du projet mais le problème c'est qu'en raison de suppression de données dans la table les id ne se suivent pas directement.
Par exemple, sur 3 enregistrements à suivre :
id = 2; nom = projet 1
id = 4; nom = projet 2
id = 9; nom = projet 3
Y a-t-il une fonction qui permette de passer d'un enregistrement au suivant ? Je suis sûr que la solution n'est pas loi mais là je bloque.
Merci d'avance
Antoine
Aug 17 2004, 01:31 PM
tu fais un tableau avec les id et ensuite, tu incrémente/décrémente sur l'indice de celui-ci
Thanh
Aug 17 2004, 01:51 PM
Kikoo,
Tu veux faire une navigation par rapport à la date de projet?
matsa
Aug 17 2004, 03:09 PM
Non en fait je ne veux pas naviguer par date de projet, mais plutôt par id. Je crois qu'Antoine m'a mis sur la bonne piste, je vais creuser dans cette direction.
A moins que quelqu'un voit autre chose ?
Merci
matsa
Aug 18 2004, 04:54 PM
Juste histoire de fermer ce topic, voici la solution que j'ai finalement adopté et qui fonctionne bien.... sans utiliser les tableaux comme me le conseillait Antoine.
En fait, j'incrémente l'id (ou décrémente) et teste s'il y a un résultat dans la table pour cette valeur d'id. La boucle s'effectue jusqu'à ce qu'un résultat soit trouvé et alors j'obtiens l'id du prochain enregistrement à afficher.
La variable $next prend la valeur 1 si on clique sur "projet suivant" et -1 si on clique sur "projet précédent".
| CODE |
if ($next <> ""){
do {
//on incrémente (ou décrémente) $id
$id = $id + $next;
$test = mysql_query("SELECT id_projet FROM maTable WHERE id_projet=$id");
while ($row = mysql_fetch_array($test, MYSQL_ASSOC)){
$nextid = $row[id_projet];
}
} while ($nextid == "");//teste si l'id existe
//id du prochain enregistrement
$id = $nextid;
} |
Thanh
Aug 18 2004, 09:01 PM
Alors, pour aller un peu dans le sens de ce que j'allais te proposer tu aurais pu juste faire deux requêtes : une pour le précédent et une pour le suivant:
Sélectionner l'id inférieur strictement ou supérieur stritement à l'id courant. Si il existe tu affiche le lien précédent/suivant. Sinon tu n'affiche pas de lien.
Bien entendu c'est parce que tu navigues via id.
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez
cliquer ici.