Classement par dates

Signaler
Messages postés
140
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
20 août 2012
-
Messages postés
140
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
20 août 2012
-
Hello,

C'est une demande de conseils car je ne sais comment procéder :

J'ai un tableau dans lequel j'affiche des maintenances (son nom, son contenu et sa date)
... or la liste risquant d'être longue je voudrais afficher les items en fonction d'une fourchette de dates mensuelles (style 'n'afficher que les items ayant eu lieu pendant le mois d'aout 2004').

J'ai les dates max et dates min grace à cette requette
$requeteMin = "SELECT dt_fait from table order by dt_fait asc";

Ne voulant pas afficher les liens (lien pour chaque mois) en dure dans la page je suis à la recherche de la boucle, requette ou même poudre de perlinpimpin me permettant d'afficher cette &*/' listes de mois !!!

En esperant qu'une ame charitable se penchera sur ma question.... bonne journée à tous !!

au plaisir de vous lire... grand merci d'avance pour vos idées, pistes, solutions !

a+

H

11 réponses

Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Hello,



toi, t'en as dans le pantalon, pour avoir ose poster la premiere question apres le post de Sjón ;-)



J'ai un peu de mal ce matin, alors pardonne-moi si je reponds a cote de la plaque...

Tout depend de comment tu stockes tes dates. Dans un cas comme
celui-ci, je conseille vivement un champ de type date! Ensuite tu as
tout un tas de clauses mysql pour faire ce que tu veux : IN BETWEEN,
MONTH, YEAR, etc etc...



Une autre solution est simplement d'utiliser LIMIT pour afficher les 20
dernieres lignes par exemple (sans tenir compte du mois). Ou toutes,
mais 20 par 20 (avec une pagination quoi).



http://dev.mysql.com/doc/mysql/en/date-and-time-functions.html



Amuse-toi bien :-)
Messages postés
140
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
20 août 2012

Hello,
Merci pour ta téponse !
la date est au format 0000-00-00
et le classement serait bien mensuel et pas par tranches de 20... pourrais tu me donner une exemple avec month.. ce serait une requete de quel style ??
en tout cas merci pour la doc... je potasse azap !!

...et pour ce qui est du pantalon ca va... mais ca n'a aucun rapport avec la question je pense !
;-) qui est ce mysterieux Sjón ??????????????????

a+
H
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Regarde le post juste avant le tien ;-)

Bah je ne sais pas...

SELECT nom, contenu, date FROM tbl_maintenance WHERE MONTH (date) = '08'
Un truc dans le genre je suppose. Pour etre honnete je n'ai jamais utilise de requetes sur les dates (je veux dire, jamais avec une condition sur une date).
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
Salut,



Si j'étais toi je stockerai mes dates au format INT avec la fonction time();



Lorsque le visiteur rentre une date, tu prends le mktime() de cette
date vu que le visiteur ne rentre pas la dates en secondes depuis le
1er janvier 1970 (sic) et tu génères ta requête en tenant compte de ce
mktime, et d'un autre mktime() correspondant à la deuxième date
butoire. ça sera largement plus simple puisque tu n'auras à manipuler
que des chiffres et pas de dates dans ta requête, et ça sera également
plus rapide.

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Hmm,

plus rapide sans doute, plus simple...lol. Je doute. Les fonctions date de mysql sont tres simples et tres completes. Mais bon, apres c'est une affaire de gout, les deux solutions conviendront tres bien.
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
Bah l'avantage de cette solution est que si tu veux rechercher une date
qui comprend un mois et un jour par exemple le 02 août 2004 tu es
obligé de rajouter dans ta requête AND DAY()=02

ou un truc du genre tandis qu'avec les timestamp tu n'as pas ce souci,
ta requête reste unique, c'est plus simple à gérer au final ;-)

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
C'est vrai :-) Sauf que je gererais directement day, month et year, perso. Avec des variables par defauts.
Messages postés
140
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
20 août 2012

Hello,

SELECT nom, contenu, date FROM tbl_maintenance WHERE MONTH (date) = '08'
m'a l'air tout a fait bien ! mais je ne sais pas encore trop comment je vais me débrouiller avec !!*
Pour ce qui est de changer le format... étant donné que mon site fonctionne avec 0000-00-00 je prefere pas changer en cours de route !
en tt cas merci pr vos idées !!
H
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
Ok pas de prob ;-)

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Oui enfin verifie la syntaxe hein lol...sur la page que je t'ai donnee. Et BETWEEN te permet de faire des...heu...des between lol. Entre deux dates, deux mois, deux annees etc...

Bon courage.
Messages postés
140
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
20 août 2012

Hello,
yahhahahhahhahh !! on touche au but !!
SELECT nom, contenu, date FROM tbl_maintenance WHERE MONTH (date) = '08'
fonctionne impec !

Reste un détail à finaliser avant de me présenter au Internet Site of The Year Awards : comment faire pour n'afficher que les liens mensuels entre les dates min et les dates max ??

un truc du style select distinct date from table group by month-year ????????

j'ai comme l'impression que le month-year n'est pas mysql compatible... me trompe je ???

euh...suis-je sur la bonne piste ?

encore merci pour votre aide !

a+

H