Exploitation d'une table

Invité
Invité n'ayant pas de compte PHPfrance

12 juin 2011, 06:23

Bonjour,

j'ai un petit problème avec l'exploitation des résultats d'un tableau tiré d'une requête du style:
$list = mysql_query("SELECT * FROM bdd WHERE pays='Fr' GROUP BY Fille ORDER BY Mamie DESC, Maman ASC, Fille ASC");

Voilà le type de tableau que j'obtiens, et qui me convient:
Fille1 ==> Fille1.php
Fille2 ==> Fille2.php
Fille3 ==> Fille3.php
Fille4 ==> Fille4.php
...

Maintenant, je souhaiterai faire comprendre à une requête que, quand je suis sur la page "Fille2.php" (par ex), l'afférence suivante est "Fille3"; et donc que, en cliquant sur "Suivant", je dois aller sur la page "Fille3.php" (en espérant avoir été clair!!)
Mais là, j'arrive à rien...

Quelqu'un pourrait m'aider svp (attention, je débute en PHP !!!)
Merci d'avance

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

12 juin 2011, 10:14

Quel est le critère dans ta base de données qui te permet de savoir qu'après fille1 tu dois aller à fille2 ?

A noter cependant que la commande "group by" doit normalement s'utiliser avec une liste définie de colonnes (donc pas un select *) et comportant au moins une fonction de groupe (count, sum, ...), sans cela, les résultats peuvent s'avérer hasardeux...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

bubu
Invité n'ayant pas de compte PHPfrance

12 juin 2011, 12:23

Bonjour, et merci pour ta réponse!

J'utilise ici un GROUP BY avec un "SELECT * " car je veux récupérer toutes les infos correspondant à ma requête de listing, le tableau ne montrant (volontairement) qu'une partie des données retenues par cette requête. Je dois avoir de la chance, ce listing correspond exactement à ce que je veux!
J'utilise également GOUP BY car, pour une Fille donnée, j'ai plusieurs entrées/photos (Mamie, Mère et Fille ne sont que des noms illustratifs^^)

Une meilleure idée du tableau en question, obtenu avec
$list = mysql_query("SELECT * FROM bdd WHERE pays='Fr' GROUP BY Fille ORDER BY Mamie DESC, Maman ASC, Fille ASC");
(pour une Mère donnée, les Filles sont ordonnées, et pour une Mamie donnée, les Mères sont ordonnées aussi...)
Mamie: Mere: Fille: Page:
Mamie-C Mere-1 Fille-1 ==> Fille-C11.php
Mamie-C Mere-2 Fille-1 ==> Fille-C21.php
Mamie-C Mere-3 Fille-1 ==> Fille-C31.php
Mamie-C Mere-3 Fille-2 ==> Fille-C32.php
Mamie-B Mere-1 Fille-1 ==> Fille-B11.php
Mamie-B Mere-1 Fille-2 ==> Fille-B12.php
Mamie-B Mere-1 Fille-3 ==> Fille-B13.php
Mamie-B Mere-2 Fille-1 ==> Fille-B12.php
Mamie-A Mere-1 Fille-1 ==> Fille-A11.php
Mamie-A Mere-2 Fille-1 ==> Fille-A21.php
Mamie-A Mere-3 Fille-1 ==> Fille-A31.php
Mamie-A Mere-4 Fille-1 ==> Fille-A41.php
...

Mon problème est que je ne sais pas comment faire le lien entre la page sur laquelle je suis à un instant T(ex: Fille-B13.php) et le résultat de ma liste... Et du coup, comment aller aux pages Previous/Next correspondant à la requête (Fille-B12.php / Fille-B12.php).
Donc:
- le critère indiquant qu'après Fille-B13 c'est Fille-B12: provient de la requête
- le critère permettant d'aller de Fille-B13.php à Fille-B12.php: aucune idée....

J'espère que tu comprends mieux mon soucis ? (qu'est-ce que c'est galère à expliquer clairement^^^^)

Invité
Invité n'ayant pas de compte PHPfrance

15 juin 2011, 10:15

aucune idée ?...

Eléphanteau du PHP | 20 Messages

15 juin 2011, 11:01

Salut,
je t'avou que je n'ai jamais été confronté à ce problème. J'ai bien une idée qui me viens mais elle me semble bien complexe pour ta demande... :shock:
Je vais quand même m'exprimer:
Si tu ajoutes un champs "ordre" par exemple dans ta table bdd , cela permettra a chaque recherche utilisateur de distribuer un chiffre aux resultats trouvés, par exemple:
Fille1 ==> Fille1.php ==> 1
Fille2 ==> Fille2.php ==> 2
Fille3 ==> Fille3.php ==>3
Fille4 ==> Fille4.php ==>4

Comme ca cela te permet denvoyer dans l'url le choix de la page grace a cette donnée stocké.
Bien sur il ne faudra pas oublier de supprimer toutes ces valeurs à chaque nouvelle recherche dans quel cas ca naurait plus aucun sens dans la recherche en cours.
Hail to the king!

Invité
Invité n'ayant pas de compte PHPfrance

15 juin 2011, 23:05

Merci pour ta réponse!

Honnêtement, j’étais loin de penser que ma "query" était si galère, pensant plutôt passer à côté du petit détail qui change tout :!:
En fait, pour dépanner, j'avais déjà appliqué ton systeme, et il marche tres bien :wink:
Mais pour rajouter ce champ sur plusieurs centaines d’entrées, c'est plutôt fastidieux...
A moins qu'il existe un moyen d'attribuer un numéro de classement à chacune des entrées, ordonnées suivant le résultat de ma query, et ensuite de faire appel à ces numéros pour Next/Previous ?
Mais là non plus, je vois pas comment faire...