Page 1 sur 1

Afficher le suivant....

Posté : 09 avr. 2006, 06:17
par auclairp
J'ai une table avec plusieurs "membres" dedans.... j'ai créer une page php pour m'afficher les infos du mambre, et j'aimerais y ajouter un lien pour afficher le membre suivant et suivant et ......

Je sais que c'est possible, mais je ne sais pas comment, et aussi, j'aimerais que le suivant ne soit pas le prochain sur la liste mais le prochain d'après un ordre croissait (alphabétique)

Merci de votre aide.

Posté : 09 avr. 2006, 12:27
par jpaul
A ta place, je regarderais avec phpMyAdmin qui permet de gérer les bases MySql et aussi de faire des tests.

Ta requête doit ressembler à quelque chose comme :

Code : Tout sélectionner

SELECT `Nom` FROM `abonnés` ORDER BY `Nom` ASC LIMIT 0 , 2
La table avec laquelle j'ai regardé la syntaxe se nomme 'abonnés'
tu dois adapter ce nom ainsi que le 'Nom' du SELECT avec l'attribu dans la table qui te permet d'accéder à la fiche.
ORDER BY permet de trier.
LIMIT 0, 2
affiche les premier et deuxième articles : il faut donc faire varier le 0 => 0, 1, 2....
L'idée tu récupères ainsi les accès à la fiche courrante et à la prochaine (pour ton lien) évidement tu peux mettre SELECT * pour récupérer dans la foulée les infos que tu veux afficher.

Je n'ai jamais fait ça mais je pense que ça doit marcher...
Bonne chance. :)

ORDER BY te donnent l'ordre que tu désire

Posté : 09 avr. 2006, 12:34
par Ryle
Il y a peut être plus simple avec mysql, mais c'est à tester :

Code : Tout sélectionner

SELECT nom FROM abonnés WHERE nom > '$nomDuMembreEnCours' ORDER BY nom ASC LIMIT 0, 1
Qui devrait te ramener la liste (en l'occurence le premier de la liste avec le limit) des noms des utilisateurs situés après celui que tu consultes dans l'ordre alphabétique, ce qui te permet donc facilement d'avoir le suivant.

L'inconvénient tel quel, c'est que ca ne gère pas les homonymes, mais ca peut facilement se faire en ajoutant un test sur le prénom si tu l'as ou l'id dans la requête

Code : Tout sélectionner

SELECT nom FROM abonnés WHERE nom > '$nomDuMembreEnCours' AND id > $idDuMembreEnCours ORDER BY nom ASC, id LIMIT 0, 1
Ca reste tout de meme à tester ;)

Posté : 09 avr. 2006, 12:35
par Truc
Salut,
ça reste de la pagination tu trouveras le principe dans le tuto de la FAQ "affichage page par page".

mais sinon tu dois avoir un lien où tu passe le pseudo du membre dont les données sont affichées et une variable pour faire la différence entre précédent et suivant.
<a href="page.php?ordre=prec&pseudo=Truc>Précédent</a>
<a href="page.php?ordre=suiv&pseudo=Truc>Suivant</a>
en début de page tu teste les variables GET pour construire une requête en fonction:
$signe = ($_GET['ordre'] == "prec") ? " < " : " > "; 
$ordre = ($signe == " < ") ? " DESC " : null; // tri croissant ou décroissant

$sql = "SELECT champs FROM table WHERE pseudo ".$signe." ".$pseudo." ORDER BY pseudo ".$ordre." LIMIT 1";
Puis affichage des données issue de la reqête.

Posté : 09 avr. 2006, 18:28
par auclairp
Salut,
ça reste de la pagination tu trouveras le principe dans le tuto de la FAQ "affichage page par page".

mais sinon tu dois avoir un lien où tu passe le pseudo du membre dont les données sont affichées et une variable pour faire la différence entre précédent et suivant.
<a href="page.php?ordre=prec&pseudo=Truc>Précédent</a>
<a href="page.php?ordre=suiv&pseudo=Truc>Suivant</a>
en début de page tu teste les variables GET pour construire une requête en fonction:
$signe = ($_GET['ordre'] == "prec") ? " < " : " > "; 
$ordre = ($signe == " < ") ? " DESC " : null; // tri croissant ou décroissant

$sql = "SELECT champs FROM table WHERE pseudo ".$signe." ".$pseudo." ORDER BY pseudo ".$ordre." LIMIT 1";
Puis affichage des données issue de la reqête.
Merci Truc, je crois que c'est exactement cela. :)