Changer ordre requête MySQL

Résolu
jejew -  
Mihawk Messages postés 4753 Statut Contributeur -
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

2 réponses

  1. Zhp Messages postés 213 Statut Membre 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
    1. 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
  2. Mihawk Messages postés 4753 Statut Contributeur 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
    1. 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
    2. Mihawk Messages postés 4753 Statut Contributeur 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
    3. 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
    4. Mihawk Messages postés 4753 Statut Contributeur 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
    5. jejew
       
      Toujours pas : #1054 - Unknown column 'a.songs.pub_date' in 'order clause' :S
      0