Mysql : ORDER BY [Résolu]

Signaler
Messages postés
67
Date d'inscription
samedi 3 juin 2006
Statut
Membre
Dernière intervention
29 janvier 2009
-
Messages postés
584
Date d'inscription
jeudi 28 décembre 2006
Statut
Membre
Dernière intervention
29 avril 2010
-
Bonjour voila ma premiere requete :
$reponse = mysql_query("SELECT * FROM message ORDER BY id DESC LIMIT 0,12");

celui si affiche les 12 dernieres lignes de bas en haut
comment faire de haut en bas? si je met DESC, cela affiche les
15 premieres.



ma dexieme requete :
$result=mysql_query("SELECT pseudo FROM data");
while($val=mysql_fetch_array($result))
{
$rang = $val['pseudo'];
$rang = str_replace("ADMIN","@ADMIN",$rang);
$rang = str_replace("MODO","%MODO",$rang);
$rang = substr($rang,0,4);
echo $rang;
}


dans cette requete cela affiche les données de pseudo de la table data.
le probleme cela s'affiche dans n'importe quel ordre
j'aimerais que cela donne :

@PSEUDO
@PSEUDO
%PSEUDO
+PSEUDO
+PSEUDO
PSEUDO
PSEUDO
PSEUDO
PSEUDO

trier pour que les '@' sosi en premier, '%' dexeime et '+' troisieme.

merci de votre aide.

3 réponses

Messages postés
49
Date d'inscription
mercredi 3 novembre 2004
Statut
Membre
Dernière intervention
3 février 2008

Zalut Eliays,

Pour la premiere : je te propose SELECT * FROM message ORDER BY id DESC LIMIT 0,12 ORDER BY id ASC
(sans grande conviction...)

Pour la deuxieme : SELECT pseudo FROM data ORDER BY rang, apres ca depend de l'ordre ascii...
Messages postés
1123
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1
yop,
si tu veux afficher les 12 dernieres de bas en haut, deux solutions, soi tu fait une requete pour compter le nombre de lignes dans ta table, ensuite tu fait
SELECT * FROM message ORDER BY id DESC LIMIT nombredelignes-12, nombredelignes;

sinon tu garde ta requete d'origine : SELECT * FROM message ORDER BY id DESC LIMIT 0,12;
et tu fait une premiere boucle pour récuperer les valeurs que tu met dans un tableau
ensuite tu refait une boucle qui parcours le nouveau tableau dans un ordre inverse (for (int i= count ($tableau)-1; $i >= 0; $i--)

pour la deuxieme je dirai comme Helorem, mais en effet, ca va dépendre de la table ascii, peut etre que les @ % et + seront en dernier, si tu veux les mettres en premier, et que tu n'a que ces trois valeurs (@, %, et +), alors tu fait quatres requetes, celles commencant par @, celle commancant par %, celle commancant par + et les autres.

wala
Messages postés
584
Date d'inscription
jeudi 28 décembre 2006
Statut
Membre
Dernière intervention
29 avril 2010
1
Si non tu peux toujours faire qulque choses comme ceci

SELECT * FROM (
    SELECT * FROM message ORDER BY id DESC LIMIT 0,12
) t1
ORDER BY id ASC

<hr size="2" width="100%" />  zen69 aka Ortho Le Profett
  [site web]