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 :
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.
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") ?>
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 :
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
3
4
5 <?php $date = $donnees['date']; list($date_a, $date_m, $date_j) = explode('-', $date); ?>
Cela marche très bien
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <?php echo $date_j .'-'. $date_m .'-'. $date_a; ?>
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 :
Voila cela marche très bien également
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'; } ?>
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 :-)
Partager