IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

ORDER BY en fonction du while [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé Avatar de kevinf
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2005
    Messages
    863
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2005
    Messages : 863
    Par défaut ORDER BY en fonction du while
    Salut,

    j'ai ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    $req = mysql_query('SELECT * FROM 1_fr_forum_topics');
     
    while ($data = mysql_fetch_array($req))  {
     
    $req3 = mysql_query('SELECT jour, mois, annee, heure, minutes FROM 1_fr_forum_reponses WHERE id_topics="'.$data['id'].'" ORDER BY id DESC LIMIT 0,1');
    $req récupère les topics, et ensuite pour chaque topic $req3 cherche le dernier message pour y récupérer sa date, et son heure de post, je voudrais que =la liste des topics soit classés en fonction de $req3.

    Mais étant donné que cette requête est faite dans le while, je ne vois pas comment faire...

    Merci de votre aide

  2. #2
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Et pourquoi ne pas le faire en une seule requête, comme par exemple (non testé) :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT t . * , r1.id, r1.annee, r1.mois, r1.jour, r1.heure, r1.minutes
    FROM 1_fr_forum_topics t
        JOIN 1_fr_forum_reponses r1 ON t.id = r1.id_topics
    WHERE r1.id = (
        SELECT MAX( id )
        FROM 1_fr_forum_reponses AS r2
        WHERE r2.id_topics = r1.id_topics )
    ORDER BY r1.id DESC

  3. #3
    Membre confirmé
    Avatar de savageman86
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 105
    Par défaut
    Utilise les jointures à la place de mettre des requêtes dans un while !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT t.*, r.jour, r.mois, r.annee, r.heure, r.minutes
    FROM 1_fr_forum_topics t
    LEFT JOIN 1_fr_forum_reponses r ON r.id_topics = t.id
    ORDER BY r.id
    Sinon, c'est étrange de faire 5 champs pour les jour/mois/annee/heure/minute... Sais-tu qu'il existe un type DATETIME qui permet de gérer les dates ?

  4. #4
    Membre éclairé Avatar de kevinf
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2005
    Messages
    863
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2005
    Messages : 863
    Par défaut
    Ok, donc j'ai fais ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    $req = mysql_query('SELECT * FROM 1_fr_forum_topics INNER JOIN 1_fr_forum_reponses ON 1_fr_forum_topics.id=1_fr_forum_reponses.id_topics');
    	while ($data = mysql_fetch_array($req))  {
    Mais maintenance, cela m'affiche tous les sujets et aussi toutes les réponses, or je ne veux voir que les sujets, mais récupérer la dernière réponse pour y afficher la date et l'heure.

    Merci

  5. #5
    Membre éclairé Avatar de kevinf
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2005
    Messages
    863
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2005
    Messages : 863
    Par défaut
    Bon, pour faire plus simple, j'ai fais autrement.

    Merci

  6. #6
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Citation Envoyé par kevinf Voir le message
    Mais maintenance, cela m'affiche tous les sujets et aussi toutes les réponses, or je ne veux voir que les sujets, mais récupérer la dernière réponse pour y afficher la date et l'heure.
    Si tu regardes la requête que je t'ai donnée, elle le fait...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. fonction Do while : erreur
    Par Novice_vba dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/02/2014, 10h20
  2. [QThread] Fonction contenant while freeze
    Par Serialk dans le forum Multithreading
    Réponses: 5
    Dernier message: 16/12/2009, 01h53
  3. creer un order sur une fonction avec criteria
    Par maouth dans le forum Hibernate
    Réponses: 12
    Dernier message: 09/09/2008, 15h57
  4. [MySQL] ORDER BY (en fonction de plusieurs tables)
    Par juJuv51 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 06/03/2007, 13h34
  5. Fonction While {} qui ne fonctionne pas
    Par zoom61 dans le forum Langage
    Réponses: 3
    Dernier message: 15/11/2006, 12h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo