tri manuel d'une requete

Eléphant du PHP | 294 Messages

07 juin 2007, 10:42

Bonjour
je souhaite organiser l'affichage des résultats d'une requête non pas de manière automatisée ( par index par ex) , mais en indiquant quelle ligne doit s'afficher à quel endroit de la page . Pour ne pas faire autant de requête sur la table qu'il y a de lignes a afficher, je suppose qu'il y a une façon d 'extraire une ligne du résultat en fonction de son id.. mais je ne sais pas comment my prendre.
par ex

Code : Tout sélectionner

$query_nouveautes = "SELECT * FROM sites"; $nouveautes = mysql_query($query_nouveautes, $base) or die(mysql_error());
je voudrait postionner moi meme l'ordre des resultats dans la page
par ex ecrire un truc du style : echo $row_nouveautes['titre'] - mais en précisant quelle ligne du resultat je veux afficher.
Merci

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

07 juin 2007, 10:48

Pour trier les lignes, il te faut utiliser l'instruction ORDER BY à la fin de ta requête en spécifiant la ou les colonnes de tri.

Code : Tout sélectionner

SELECT champ1, champ2, ... FROM table ORDER BY champ2
En revanche ce que tu sembles vouloir faire, c'est filtrer les enregistrements retournés par ta requête. Pour cela on utilise la clause WHERE qui permet de mettre des conditions :

Code : Tout sélectionner

SELECT champ1, champ2, ... FROM table WHERE champ1 > 200 AND champ3 = champ7
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 294 Messages

07 juin 2007, 10:58

Merci, je me suis peut-être fait mal comprendre. Je fais une requête sur une table qui a X champs, sans les trier. Je ne veux les trier qu'a l'affichage. Disons que le résultat de ma requête me donne une serie de ligne avec : id - titre - texte.
Maintenant je souhaite afficher en premier
la ligne 2 : id2 - titre2 - texte2
Ensuite La 5, puis la 1...
La seule façon que je connaisse est effectivement de faire autant de requête avec un select que de ligne. Je me demandais s'il y avait un moyen de dire:
affiche la ligne 2 du tableau résultat de la requête, puis la ligne 5... comme on le ferait avec un tableau associatif ( echo tableau[2][titre]; echo tableau[5][titre];...)
encore merci

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

07 juin 2007, 11:12

Oki, bah dans ce cas tu peux utiliser la fonction mysql_data_seek() qui te permet de sauter d'un enregistrement à un autre en lui passant le numéro de la ligne (il faut toutefois vérifier le nombre de ligne retourné par la requête pour savoir si on peut sauter jusqu'à tel enregistrement) :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 294 Messages

07 juin 2007, 11:15

merci je vais essayer ça