Précédent   Forum des professionnels en informatique > Bases de données > MySQL
MySQL Forum d'entraide MySQL. Avant de poster -> FAQ MySQL, Tutoriels MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/04/2011, 14h19   #1
Invité de passage
 
Homme Vincent
Inscription : avril 2011
Messages : 4
Détails du profil
Informations personnelles :
Nom : Homme Vincent
Localisation : Suisse

Informations forums :
Inscription : avril 2011
Messages : 4
Points : 0
Points : 0
Par défaut ORDER BY : Ordre d'affichage de résultats

Bonjour à tous/tes,

J'ai installé un forum phpBB sur mon site et j'utilise un script qui récupère les posts d'un topic pour les afficher sur une page externe. (lien vers le script : http://wiki.phpbb.com/Practical.Disp...external_pages)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
$posts_ary = array(
      			  'SELECT'    => 'p.*, t.*, u.username, u.user_colour, u.user_avatar',
 
       			 'FROM'      => array(
      		      POSTS_TABLE     => 'p',
     			   ),
 
    		    'LEFT_JOIN' => array(
       		     array(
                'FROM'  => array(USERS_TABLE => 'u'),
                'ON'    => 'u.user_id = p.poster_id'
     		       ),
     		       array(
                'FROM'  => array(TOPICS_TABLE => 't'),
                'ON'    => 'p.topic_id = t.topic_id'
    		        ),
   			     ),
 
    		    'WHERE'     =>  str_replace( array('WHERE ', 'topic_id'), array('', 't.topic_id'), $topic_id_where) . '
                        AND t.topic_status <> ' . ITEM_MOVED . '
                         AND t.topic_approved = 1',
 
 		       'ORDER_BY'  => 'p.post_id ASC',
 			   );
 
			    $posts = $db->sql_build_query('SELECT', $posts_ary);
 
			   $posts_result = $db->sql_query_limit($posts, $search_limit);
Si j'utilise "ORDER BY ASC", il récupère les posts depuis le premier jusqu'au 5ème.
Si j'utilise "ORDER BY DESC", il récupère les 5 derniers et les affiche depuis le dernier jusqu'au "-5".

Ce que j'aimerais, c'est récupérer les 5 derniers post, mais qu'ils puissent s'afficher dans l'ordre ASC (du plus vieux au plus récent).

Vraisemblablement, il faudrait enregistrer les valeurs récupérées par "ORDER BY DESC" dans une table et afficher les valeurs de cette table à l'envers?
On m'a aussi parler d'une fonction SQL "VIEW"?
Mes connaissance s'arrêtent malheureusement là...


Merci d'avance pour votre aide!
KG120 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2011, 15h52   #2
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 929
Points : 1 929
En passant par une sous-requête (inline view) :
Code :
1
2
3
4
5
6
7
SELECT post_id
  FROM (SELECT post_id
          FROM TOPICS_TABLE
         ORDER BY post_id DESC
         LIMIT 5
       ) t
 ORDER BY post_id
A adapter à la vrai requête, illisible puisque c'est du php.
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 02/04/2011, 16h41   #3
Invité de passage
 
Homme Vincent
Inscription : avril 2011
Messages : 4
Détails du profil
Informations personnelles :
Nom : Homme Vincent
Localisation : Suisse

Informations forums :
Inscription : avril 2011
Messages : 4
Points : 0
Points : 0
Je vois bien l'idée, merci!
J'ai pas mal de peine à l'adapter dans mon cas (php), d'autant plus qu'il y a plusieurs array dont je ne comprends pas l'utilité (ex: array(POST_TABLE => 'p',))...

Je vais continuer à essayer...
KG120 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2011, 15h43   #4
Invité de passage
 
Homme Vincent
Inscription : avril 2011
Messages : 4
Détails du profil
Informations personnelles :
Nom : Homme Vincent
Localisation : Suisse

Informations forums :
Inscription : avril 2011
Messages : 4
Points : 0
Points : 0
J'ai beau essayer, malheureusement je n'y arrive pas!

Je n'arrive pas à comprendre l'intérêt et le fonctionnement de cet array et par conséquent à placer une sous requête dedans...

Si quelqu'un pouvait m'y aider, je lui serais très reconnaissant
KG120 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 09h35   #5
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Architecte de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2004
Messages : 1 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
Citation:
SELECT post_id
FROM (SELECT post_id
FROM TOPICS_TABLE
ORDER BY post_id DESC
LIMIT 5
) t
ORDER BY post_id
->
Citation:
SELECT post_id
FROM (SELECT post_id
FROM TOPICS_TABLE
ORDER BY post_id DESC
LIMIT 5
) t
ORDER BY post_id

Persévérez cette solution est la bonne...
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 10h28   #6
Invité de passage
 
Homme Vincent
Inscription : avril 2011
Messages : 4
Détails du profil
Informations personnelles :
Nom : Homme Vincent
Localisation : Suisse

Informations forums :
Inscription : avril 2011
Messages : 4
Points : 0
Points : 0
Je suis persuadé que cette solution est la bonne mais je ne comprends toujours pas pourquoi il est nécessaire de passer par un array et surtout comment intégrer la sous-requête dans cet array...
KG120 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 10h47   #7
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 823
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 823
Points : 6 440
Points : 6 440
Là, ça n'est plus un problème lié à MySQL, mais un problème lié à PHPbb.
Question à poser sur un forum dédié à cet outil...

ced
__________________
Rédacteur / Modérateur SGBD
Mes tutoriels et la FAQ MySQL

----------------------------------------------------
Pensez aux balises code et au tag
Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
ced est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h31.


 
 
 
 
Partenaires

Hébergement Web