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

Requêtes MySQL Discussion :

Tri par date


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 5
    Par défaut Tri par date
    Bonjour à tous !

    Voilà cela fait quelques jours que j'essaye de trouver une solution pour trier une table de données selon leur date ... Je vous expose mes problèmes :

    Tout d'abord j'ai une table contenant un champs date de type date. Les dates reccueillies dans la table sont donc sous la forme américaine, ce qui est mieux pour trier sa base de donnée par date à mon goût. Le problème se pose donc à l'affichage de ces dates :

    * Dans un premier temps, je veux que sur une page les données soient affichées et triées par date dans l'ordre décroissant.
    Ma première solution a été d'ajouter la commande DATE_FORMAT dans la requete SQL comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
          <?php mysql_query("SELECT *, DATE_FORMAT(date, '%d-%m-%Y') AS date FROM ma_table ORDER BY date DESC") ?>
    Les dates sont alors affichées sous le format français, cependant le tri est mal effectué car se sont les jours qui sont dans l'ordre decroissant, donc par exemple le 22-04-2001 va se trouvé avant le 01-02-2005.

    Heuresement j'ai trouvé une solution

    sans indiquer le DATE_FORMAT de la requete SQL, j'ai par la suite créé une variable qui coupe la date, un truc tout bête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
          <?php
          $date = $donnees['date'];
          list($date_a, $date_m, $date_j) = explode('-', $date);
          ?>
    Avec ceci je peux alors affiché ma date sous la forme que je veux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
          <?php echo $date_j .'-'. $date_m .'-'. $date_a; ?>
    Cela marche très bien
    Cependant ma question est : Peut-on avoir quelque chose de plus simple ?

    * Dans un second temps j'aimerai que sur une page les données de ma table soient affichées seulement si la date est plus vielle que la date actuelle.
    J'ai donc trouvé l'astuce suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
          <?php $date = stripslashes($donnees['date']);
          list($date_a, $date_m, $date_j) = explode('-', $date);
          if ($date < date('Y-m-d'))
          {
          echo 'les données à afficher';
          }
          ?>
    Voila cela marche très bien également
    Question : Y a t-il un autre moyen ?

    * En dernier lieu j'aimerai n'afficher que les 4 premières données précédentes (date < date actuelle)
    Comment faire ?



    Voilà en espérant que vous avez compris où je voulai en venir !

    Merci de vos réponses :-)

  2. #2
    Membre chevronné Avatar de jota5450
    Inscrit en
    Janvier 2006
    Messages
    263
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Janvier 2006
    Messages : 263
    Par défaut
    slt...

    t´arrives a tous faire en changeant simplement ta requete..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT *,DATE_FORMAT(ta_date, '%d-%m-%Y') 
    FROM ta_table 
    where  ta_date<now() 
    order by DATE_FORMAT(ta_date, '%Y-%m-%d') desc limit 4;
    cependant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    order by ta_date desc limit 4;
    devrait suffir...

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 5
    Par défaut
    Citation Envoyé par jota5450 Voir le message
    slt...

    t´arrives a tous faire en changeant simplement ta requete..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT *,DATE_FORMAT(ta_date, '%d-%m-%Y') 
    FROM ta_table 
    where  ta_date<now() 
    order by DATE_FORMAT(ta_date, '%Y-%m-%d') desc limit 4;
    cependant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    order by ta_date desc limit 4;
    devrait suffir...
    Merci je n'y ai même pas pensé !
    En revanche il manque une chose pour que la date soit affichée comme on veut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT *,DATE_FORMAT(la_date, '%d-%m-%Y') 
    AS la_date
    FROM ta_table 
    where  la_date<now() 
    order by DATE_FORMAT(la_date, '%Y-%m-%d') desc limit 4;
    et en ce qui concerne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    order by DATE_FORMAT(la_date, '%Y-%m-%d') desc limit 4
    il faut bien précisé le format car comme j'ai di précédemment il tri avec le format choisit par ordre alphabétique, donc par jours.

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

Discussions similaires

  1. [SQL-VBA]tri par date dans access
    Par Mickey_Mouse dans le forum VBA Access
    Réponses: 5
    Dernier message: 06/02/2007, 09h49
  2. Optimisation d'un tri par date
    Par padawa dans le forum Requêtes
    Réponses: 7
    Dernier message: 12/05/2006, 15h48
  3. requete : tri par date + groupement
    Par cbe dans le forum Requêtes
    Réponses: 8
    Dernier message: 08/01/2006, 19h30
  4. tri par date
    Par Digiduck dans le forum Requêtes
    Réponses: 5
    Dernier message: 06/06/2005, 21h51
  5. [ XML ][ XSL ] tri par date
    Par zozolh2 dans le forum XMLRAD
    Réponses: 6
    Dernier message: 26/08/2004, 10h19

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