comparer 2 dates

Yam
Petit nouveau ! | 8 Messages

05 juil. 2005, 14:00

Bonjour,
j'aimerais savoir comment comparer deux dates du type 2005-03-05

Je voudrais en fait sélectionner des évènements ayant eu lieu dans une période choisie et sur un lieu précis apres le remplissage du formulaire.

Au début l'utilisateur dois remplir un formulaire dans lequel il choisi un lieu ($lieu) et une période : de $date1 à $date2

la table contient un lieu, l'évenement et la date de l'évènement ($datetime)

j'ai écris :
"SELECT évènement FROM table WHERE lieu='$lieu' && '$date1'< datetime<'$date2' ORDER BY datetime DESC"
mais cela me sélectionne tous les évènements du lieu choisi sans prendre en compte le filtre de la période.

Quelqu'un pourrait-il m'éclairer ?

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

05 juil. 2005, 14:01

regarde BETWEEN dans la doc MySQL

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

05 juil. 2005, 14:10

expression BETWEEN min AND max
Si expression est supérieure ou égale à min et expression est inférieure ou égale à max , BETWEEN retourne 1 , sinon 0 . Ceci est équivalent à l'expression (min <= expression AND expression <= max) si tous les arguments sont du même type. Dans tous les autres cas, la conversion de type prends place, selon les règles suivantes, mais appliquée aux trois arguments. Notez que avant la 4.0.5, les arguments étaient convertis au type de expr .


mysql> SELECT 1 BETWEEN 2 AND 3;
-> 0
mysql> SELECT 'b' BETWEEN 'a' AND 'c';
-> 1
mysql> SELECT 2 BETWEEN 2 AND '3';
-> 1
mysql> SELECT 2 BETWEEN 2 AND 'x-3';
-> 0

expr NOT BETWEEN min AND max
Même chose que NOT (expr BETWEEN min AND max) .

COALESCE(list)
Retourne le premier élément non- NULL de la liste :


mysql> SELECT COALESCE(NULL,1);
-> 1
mysql> SELECT COALESCE(NULL,NULL,NULL);
-> NULL
http://www.nexen.net/docs/mysql/annotee ... ?lien=date
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Yam
Petit nouveau ! | 8 Messages

06 juil. 2005, 09:37

La solution pourrait ressembler à ca ? :
"SELECT évènement FROM table WHERE lieu='$lieu' && datetime=(SELECT datetime BETWEEN $date1 AND $date2)"
Bien sur ca ne marche pas. Il faudrait que je sélectionne les dates comprises entre la date1 et la date2. Comment les récupérer pour les inclure dans le WHERE ?

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

06 juil. 2005, 09:47

Bien sur ca ne marche pas.
J'ai plus envie de t'aider, d'un coup :(

edit : C'est pas contre toi, mais ça dégoûte un peu ce genre de commentaire. Si cela ne fonctionne pas, c'est bien de TA faute, pas de la notre. Ton ordi fait ce que TU lui dis de faire.
Modifié en dernier par mere-teresa le 06 juil. 2005, 11:27, modifié 2 fois.

Yam
Petit nouveau ! | 8 Messages

06 juil. 2005, 09:55

:shock: euh ben merci quand même mais c'est juste que je vois vraiment pas comment faire (j'ai jamais recu aucun cours de php donc je suis plus que limité)

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

06 juil. 2005, 09:59

pourquoi fais-tu un deuxième SELECT ?

pour une condition simple en SQL c'est champ = valeur

sauf que là y'a deux valeurs pour le between mais ça ne change pas grand chose

regarde mieux la doc et tu verras ton erreur, simplifie ta requête

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

06 juil. 2005, 10:01

Allez, on va mettre la faute sur le tuto qui est peut être pas très clair pour un n00b

Sinon SORTEZ LES VARIABLES DES CHAINES :evil: . Parce que le jour où on utilise un tableau, on se demande pourquoi ça ne marche pas

Et en plus, c'est plus clair à lire avec la coloration syntaxique :wink:
"SELECT évènement FROM table WHERE lieu='".$lieu."' AND datetime BETWEEN '".$date1."' AND '".$date2."'"; 
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Yam
Petit nouveau ! | 8 Messages

06 juil. 2005, 10:26

merci ca marche :D j'étaisd pas trop loin quand même :o

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

06 juil. 2005, 10:29

non effectivement, c'est pour ça que tu aurais pu trouver tout simple avec le docs et les indications...

mais bon zeus est arrivé, encore plus facile :lol:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

06 juil. 2005, 10:32

Excuse moi ouckileou :oops: mais j'ai essayé de me mettre dans la peau de quelqu'un qui connait pas la syntaxe et je trouvais pas la doc très simple à comprendre (ligne de commande)

En tout cas, c'est pour conseiller de sortir les variables des chaines que j'ai posté à l'origine et je me suis dit que tant qu'a fair, autant l'aider par la même occasion
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Yam
Petit nouveau ! | 8 Messages

06 juil. 2005, 10:39

c'est vrai que l'aide de nexen n'est pas vraiment simple à comprendre pour un débutant partant presque de zéro et ne connaissant pas grand chose à la syntaxe.
Merci pour tout :wink:

Yam
Petit nouveau ! | 8 Messages

06 juil. 2005, 10:41

edit : C'est pas contre toi, mais ça dégoûte un peu ce genre de commentaire. Si cela ne fonctionne pas, c'est bien de TA faute, pas de la notre[/color]
ca c'est évident, j'ai jamais prétendu le contraire d'ailleurs

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

06 juil. 2005, 10:45

bah c'est pas grave zeus

et je crois que y'a eu un petit malentendu au-dessus, on oublie ;)