Changer ordre requête MySQL

Résolu
jejew -  
Mihawk Messages postés 4315 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Pour une application dans mon site, je dois prendre les 30 articles récents qui suivent une date. J'ai un article du 1er septembre et imaginons qu'après cette date j'ai posté 30 articles. J'aimerais prendre les 10 articles qui suivent directement celui de 1er septembre.

Ma requête SQL est donc la suivante :

SELECT * FROM articles WHERE pub_date > '2011-09-01 19:00:00' ORDER BY songs.pub_date LIMIT 10


Ca m'affichera donc :

Article 1 - 2011-09-02 19:00:00
Article 2 - 2011-09-03 19:00:00
Article 3 - 2011-09-04 19:00:00
.......

Or j'aimerais afficher sur mon site :

..........
Article 3 - 2011-09-04 19:00:00
Article 2 - 2011-09-03 19:00:00
Article 1 - 2011-09-02 19:00:00

Je ne peux pas mettre un ordre DESC dans MySQL sinon il va prendre les 10 derniers article depuis maintenant.
J'aimerais donc pouvoir switcher l'ordre dans ma boucle php while.
Avez-vous une idée ?

Merci d'avance !

Jeremy

A voir également:

2 réponses

Zhp Messages postés 198 Date d'inscription   Statut Membre Dernière intervention   37
 
Bonjour,

Quand on cherche une solution en php le mieux est de commencer pas php.net :D

http://php.net/manual/fr/function.array-reverse.php
0
jejew
 
Ca va bien pour une table array mais je ne vois pas comment je pourrais l'intégrer à la boucle :

		while ($data = mysql_fetch_assoc($result))
			{
echo '<li><a href="index.php?posttitle='.$data['post_title'].'"><img src="campus/upload/cover_'.$data['post_title'].'.jpg"><span class="title"><strong>'.$category_name.'</strong><br>'.$data['title'].'</span></a></li>';
			}



Merci !
0
Mihawk Messages postés 4315 Date d'inscription   Statut Contributeur Dernière intervention   846
 
Essaye donc ceci :

SELECT * FROM (SELECT * FROM articles WHERE pub_date > '2011-09-01 19:00:00' ORDER BY songs.pub_date LIMIT 10) ORDER BY songs.pub_date DESC

0
jejew
 
Merci pour ta réponse.

Malheureusement, comme je l'ai dit plus haut je ne peux pas utiliser DESC de SQL.
Exemple :
J'ai un article du 1er septembre et imaginons qu'après cette date j'ai posté 30 articles. J'aimerais prendre les 10 articles qui suivent directement celui de 1er septembre. Si j'utilise DESC il me prendra les 10 les plus récents à ce jour et pas les 10 tout juste après le 1er septembre.
0
Mihawk Messages postés 4315 Date d'inscription   Statut Contributeur Dernière intervention   846
 
Si tu avais bien lu ma réponse tu verrai que je n'applique le DESC qu'aux résultats d'une première sous-requête.
Cela te récupère les bons résultats puis te les ordonne.
Essaye donc !
0
jejew
 
Mes excuses ! J'avais vu DESC et j'ai foncé ! :/
J'ai essayé malheureusement mysql me répond :

'MySQL a répondu:Documentation
#1248 - Every derived table must have its own alias'

Mais je pense qu'on est prêt du but :)
0
Mihawk Messages postés 4315 Date d'inscription   Statut Contributeur Dernière intervention   846
 
Et ça ?

SELECT * FROM (SELECT * FROM articles a WHERE a.pub_date > '2011-09-01 19:00:00' ORDER BY a.songs.pub_date LIMIT 10) b ORDER BY b.songs.pub_date DESC
0
jejew
 
Toujours pas : #1054 - Unknown column 'a.songs.pub_date' in 'order clause' :S
0