Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
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 30/05/2006, 15h09   #1
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
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 :
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.
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2006, 15h14   #2
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
De toute façon c'est un problème SQL pas PHP
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2006, 15h19   #3
Membre Expert
 
Inscription : avril 2006
Messages : 1 338
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2006
Messages : 1 338
Points : 1 315
Points : 1 315
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
boo64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2006, 15h30   #4
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
Citation:
De toute façon c'est un problème SQL pas PHP
Euh ouais je suis un peu paumé avec les nouvelles rubriques.

Citation:
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.
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2006, 16h08   #5
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
...

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.
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2006, 16h13   #6
Membre Expert
 
Inscription : avril 2006
Messages : 1 338
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2006
Messages : 1 338
Points : 1 315
Points : 1 315
__________________
Stay in Bed .. Save Energy
boo64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h54.


 
 
 
 
Partenaires

Hébergement Web