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 :

[SQL] Placer deux clauses dans un ORDER BY


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut [SQL] Placer deux clauses dans un ORDER BY
    Bonjour,

    j'ai un problème avec mon forum. Il est censé afficher les messages par ordre de récence des réponses pour un thème donné.
    Le problème est que tous les messages n'ont pas de réponse, donc déjà c'est faussé.

    Le but est donc de placer deux priorité dans l'ordre d'affichage :
    1) Quand un nouveau sujet est posté, il se place en premier.
    2) Quand une réponse est postée pour un sujet, ce sujet repasse en premier.

    Là j'ai fait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT id,contenu,titre,
    DATE_FORMAT(date,'%d.%m.%Y à %kH%i') AS date,
    DATE_FORMAT(dernierSousCom,'%d.%m.%Y à %kH%i') AS dernierSousCom,lu  
    FROM commentaire 
    WHERE idDef='".$idDef."' 
    ORDER BY dernierSousCom DESC  
    LIMIT ".$debut.",".$fin."
    Ici en fait 'date' est la date du sujet initial et 'dernierSousCom' est la date de la dernière réponse (on a des inclusions de donnée d'une autre table pour éviter les requêtes qui pompent trop de ressources).
    Problème de cette requête :
    Et bien si le champ 'dernierSousCom' est vide parce qu'il n'y a pas eu de réponse, la requête ne sait plus quoi faire et donc l'affichage est complètement désordonné.

    Objectif :
    Il faudrait faire en sorte que cette requête affiche en premier le dernier sujet ou bien le sujet ayant eu la dernière réponse

    Solution que je viens de trouver en écrivant ce message:
    J'update le champ "dernierSousCom' avec la date du nouveau sujet en plus d'envoyer celle-ci dans le champ 'date'. Comme ça mon champ dernierSousCom n'est jamais vide et quand une nouvelle réponse est postée il est updaté par la date de celle-ci, et on a bien un affichage cohérent.

    C'est bon hein ?
    En fait je suis sur que c'est bon, mais je poste quand même dès fois que je me sois planté ou que vous ayez une autre idée.
    C'est pas parce que j'ai tort que vous avez raison.

  2. #2
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    De toute façon c'est un problème SQL pas PHP
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    pas besoin d'update a la creation de la discussion tu rempli 'date' et 'derniersouscom' et au moment du post d'un message update sur 'datesouscom'
    Stay in Bed .. Save Energy

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    De toute façon c'est un problème SQL pas PHP
    Euh ouais je suis un peu paumé avec les nouvelles rubriques.

    pas besoin d'update a la creation de la discussion tu rempli 'date' et 'derniersouscom' et au moment du post d'un message update sur 'datesouscom'
    Bah j'ai du mal m'expliquer parce que c'est exactement ce que je compte faire . En tout cas ta réponse semble confirmer que tu es d'accord avec ma soluce.
    C'est pas parce que j'ai tort que vous avez raison.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    ...

    En fait ça fonctionnait déjà comme ça, simplement comme je poste deux messages par minutes pour tester, j'avais l'impression que ça fonctionnait pas

    Pour plus de rpécision il faudrait enregistrer en plus les dates avec time() mais bon en pratique on s'en fiche.

    Merci les gars.
    C'est pas parce que j'ai tort que vous avez raison.

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    Stay in Bed .. Save Energy

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

Discussions similaires

  1. [SQL] deux count dans une requette
    Par lothar83fr dans le forum Langage SQL
    Réponses: 19
    Dernier message: 14/08/2008, 17h00
  2. Comment valider une de deux Option dans un Sql (Insert into)
    Par r.mehdi dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 15/05/2008, 16h20
  3. SQL Loader : deux champs dans une colonne
    Par Kiroukool dans le forum SQL*Loader
    Réponses: 4
    Dernier message: 05/10/2007, 10h21
  4. [MySQL] comparaison de deux dates dans un ordre sql
    Par opeo dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 21/03/2007, 14h34
  5. Réponses: 3
    Dernier message: 18/09/2006, 20h55

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