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 :

Classement par date


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 53
    Points : 40
    Points
    40
    Par défaut Classement par date
    Hello,

    J'ai un table "site_agenda" contenant une liste de rendez-vous, j'aimerais afficher sur ma page les prochains rendez vous qui vont avoir lieu classé par section.
    Pour ce faire j'utilise cette requête..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $dateRDV		=	date('y-m-d');
    SELECT idRdv, title, idSection, dateRdvStart, dateRdvEnd FROM site_agenda WHERE dateRdvStart >= '$dateRDV' GROUP BY idSection ORDER BY dateRdvStart,idSection DESC"
    Le problème est qu'il m'affiche les derniers rendez-vous les plus lointain ..

    exemple :
    si pour une section j'ai 3 rendez-vous
    1) 12/02/08
    2) 12/03/08
    3) 12/04/08

    j'aimerais que pour cette section il m'affiche le rendez-vous du 12/02/08 hors qu'avec ma requête il va m'afficher le rendez-vous du 12/04/08

    Une idée ?

    Merci d'avance ...

  2. #2
    Membre averti
    Inscrit en
    Août 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 360
    Points : 396
    Points
    396
    Par défaut
    Bonjour,

    Si tu mets ASC au lieu de DESC ?

    A+

  3. #3
    Membre confirmé
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 397
    Points : 518
    Points
    518
    Par défaut
    Salut

    quel est le type du champs dateRdvStart dans ta table ?

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 774
    Points : 936
    Points
    936
    Par défaut
    si tu ne veux pas les RDV lointains, je crois qu' il te faut limiter ça dans ta requete ;un between par exemple

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Points : 631
    Points
    631
    Par défaut
    Bonjour,
    si vous voulez que MySQL retourne tous les rendez-vous pour le 12/02/08, cette requête devrait suffire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT `idRdv`, `title`, `idSection`, `dateRdvStart`, `dateRdvEnd` 
    FROM `site_agenda` 
    WHERE `dateRdvStart` = '12/02/08' 
    ORDER BY `dateRdvStart, `idSection` DESC
    Cordialement,
    DaRiaN.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 53
    Points : 40
    Points
    40
    Par défaut
    - En fait le DESC et le ASC ne change rien sauf si je retire le GROUP BY idSection...
    - Le type de ma table est datetime
    - pour ce qui est de cette requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT `idRdv`, `title`, `idSection`, `dateRdvStart`, `dateRdvEnd` 
    FROM `site_agenda` 
    WHERE `dateRdvStart` = '12/02/08' 
    ORDER BY `dateRdvStart, `idSection` DESC
    Le problème est que les rendez-vous ont des dates variables ce qui veux dire que je ne peux pas fixer la date mais plustot prendre le premier rendez-vous qui vient a partir d'aujourd'hui ...

  7. #7
    Membre averti
    Inscrit en
    Août 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 360
    Points : 396
    Points
    396
    Par défaut
    RE,

    Sous SQL Server c'est SELECT TOP, sous ACCESS, c'est First, il me semble...

    Mais je ne sais pas sous mySQL

    http://dev.mysql.com/doc/refman/5.0/fr/select.html

    mais ceci peut peu etre t'aider

    A+

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Points : 631
    Points
    631
    Par défaut
    Vous pouvez toujours utiliser les sous-requêtes ou les jointures :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT * 
    FROM `site_agenda` 
    WHERE `dateRdvStart` = 
    (
      SELECT min(`dateRdvStart`) 
      FROM `site_agenda` 
      WHERE date(`dateRdvStart`) = CURRENT_DATE
    )
    ;

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 53
    Points : 40
    Points
    40
    Par défaut
    J'ai testé mais il ne me revoit rien et ne me fait aucune erreur ...

  10. #10
    Membre averti
    Inscrit en
    Août 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 360
    Points : 396
    Points
    396
    Par défaut
    Re,

    Qu'a tu testé au final ?

    A+

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 53
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par DaRiaN Voir le message
    Vous pouvez toujours utiliser les sous-requêtes ou les jointures :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT * 
    FROM `site_agenda` 
    WHERE `dateRdvStart` = 
    (
      SELECT min(`dateRdvStart`) 
      FROM `site_agenda` 
      WHERE date(`dateRdvStart`) = CURRENT_DATE
    )
    ;
    cette requête ...

  12. #12
    Membre averti
    Inscrit en
    Août 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 360
    Points : 396
    Points
    396
    Par défaut
    Bonjour,

    La requête est bonne mais il n'y a rien dedans pour la date donnée.

    Essayes d'executer catte requète tout d'abord :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      SELECT min(`dateRdvStart`) 
      FROM `site_agenda` 
      WHERE date(`dateRdvStart`) = CURRENT_DATE
    Celle-ci devrait te renvoyer le premier RDV pour une date donnée...

    Si il n'y en a pas, c'est normal que ça ne te retourne rien, je pense

    A+

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 53
    Points : 40
    Points
    40
    Par défaut
    ha ok mais alors ce n'est pas tout a fait ce que je veux, car le but de ma requête est d'annoncer le prochain rendez vous donc si il n'y en a pas pour le moment donner il faudrait qu'il me revoit le rendez-vous le plus proche d'aujourd'hui...

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Points : 631
    Points
    631
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT * 
    FROM `site_agenda` 
    WHERE `dateRdvStart` = 
    (
      SELECT min(`dateRdvStart`) 
      FROM `site_agenda` 
      WHERE dateRdvStart` > CURRENT_DATE
    )
    ;
    Il faut comprendre le code avant de l'utiliser.

    Si vous voulez utiliser plus de précision, remplacez CURRENT_DATE par NOW().

  15. #15
    Membre averti
    Inscrit en
    Août 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 360
    Points : 396
    Points
    396
    Par défaut
    Re,

    Essayes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    SELECT * 
    FROM `site_agenda` 
    WHERE `dateRdvStart` = 
    (
      SELECT min(`dateRdvStart`) 
      FROM `site_agenda` 
      WHERE date(`dateRdvStart`) >= CURRENT_DATE
    )
    ;
    A+

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 53
    Points : 40
    Points
    40
    Par défaut
    Alors j'ai essayé cette requête et ça fonctionne bien le problème c'est qu'il ne me sélection qu'un seul rendez-vous en l'occurrence le 16/02/2008 mais le problème c que j'ai d'autre rendez-vous ce jour la dans d'autre section et il ne me les sélectionnes pas ... bisard ...

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Points : 631
    Points
    631
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT * 
    FROM `site_agenda` 
    WHERE date(`dateRdvStart`) = 
    (
      SELECT date(min(`dateRdvStart`)) 
      FROM `site_agenda` 
      WHERE dateRdvStart` > CURRENT_DATE
    )
    ;

Discussions similaires

  1. [MySQL-5.1] Classement par date/heure
    Par Invité dans le forum Requêtes
    Réponses: 5
    Dernier message: 18/09/2013, 14h42
  2. [AC-2010] classement par date
    Par mcaiki dans le forum VBA Access
    Réponses: 2
    Dernier message: 25/08/2011, 09h50
  3. RecordSet classement par date
    Par Linio dans le forum ASP
    Réponses: 9
    Dernier message: 21/05/2008, 20h55
  4. [Conception] Classement par date et id : donner la priorité
    Par psychoBob dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 01/02/2006, 15h04
  5. Problème classement par date
    Par Triomen dans le forum Langage SQL
    Réponses: 12
    Dernier message: 06/09/2005, 14h09

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