Page 1 sur 2

Interval entre deux date ou timestamp

Posté : 04 déc. 2006, 23:41
par Moker
bonsoir,

je cherche à comparer des date pour ajouter un rendez vous dans une base.
J'aimerait lors de sa soumission, verifier si la date de debut ou de fin d'un formulaire n'est pas deja reservée pour un rendez-vous enregistré.
Plus precisement si $_POST["debut"] ou $_POST["fin"] ne se situe pas entre le timestamp des champs debut et fin de la base.

avez vous quelques conseils pour m'aider ?

merci à vous :wink:

Posté : 04 déc. 2006, 23:42
par DocType
ba un petit test en php non ?
un if :wink:

Posté : 04 déc. 2006, 23:47
par Moker
héhé :D

merci à toi LHDN92, pour cela pas de soucis, je sait bien qu'il faut utiliser un if :wink:

malheureusement je ne voit pas comment tester si les dates soumisent font parties de l'interval debut/fin des enregistrement de la base :cry:

Posté : 04 déc. 2006, 23:57
par DocType
héhé :D

merci à toi LHDN92, pour cela pas de soucis, je sait bien qu'il faut utiliser un if :wink:

malheureusement je ne voit pas comment tester si les dates soumisent font parties de l'interval debut/fin des enregistrement de la base :cry:
dans ta requête !
je suis en train de te trouver la requête qui convient, mais pour ma tite tête c'est assez complexe ^^

Posté : 05 déc. 2006, 00:11
par DocType
si je ne me trompe pas, pour quatres tests différents

Code : Tout sélectionner

enregistré |---------| a enregistrer |---------| enregistré |---------| a enregistrer |---------| enregistré |--------| a enregistrer |-------------| enregistré |-------------| a enregistrer |--------|
Pour ces quatres possibilités, les tests en sql seraient:

Code : Tout sélectionner

WHERE (date_deb>recorded_debut AND date_deb<recorded_fin) || (date_fin>recorded_debut AND date_fin<recorded_fin) || (date_deb<recorded_debut AND date_fin>recorded_fin)

date_deb = date de debut que tu souhaites enregistrer
date_fin = date de fin que tu souhaites enregistrer
recorded_deb = ton champ timestamp de debut dans la table
recorded_fin = ton champ timestamp de fin dans la table

Posté : 05 déc. 2006, 00:37
par Ajoloca
Bonsoir,

Une autre façon de faire c'est d'utiliser 'BETWEEN'
• 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).

Posté : 05 déc. 2006, 00:47
par Moker
Merci beaucoup LHDN92 ! :D

c'est exactement ce que je desirait faire et comme tout se passe dans la requete ca m'aide encore plus :wink:

merci encore pour ton aide ! bonne continuation :)

Posté : 05 déc. 2006, 00:54
par Truc
Modération :
Moker, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.

Tu peux réaliser cette opération en cliquant sur le bouton [Mettre Résolu] en haut à gauche de ce sujet.

Posté : 05 déc. 2006, 00:55
par Moker
cette fonction aussi colle parfaitement avec le resultat desiré :D

merci à toi aussi Ajoloca :wink:

Posté : 05 déc. 2006, 00:58
par Moker
pardon truc, mais je n'ai pas eut le temps de mettre resolu je redigeait le deuxieme message :oops:

j'essairait de faire plus vite la prochaine fois :lol:

Posté : 05 déc. 2006, 01:02
par Ajoloca
Re,
n'oublie pas que tu peux ajouter des conditions
Exp:

Code : Tout sélectionner

mysql> select ('b' between 'a' and 'c') and (1 between 2 and 3) as ok; +----+ | ok | +----+ | 0 | +----+ 1 row in set (0.00 sec)
Si tu obtiens 1 les deux son vraies, si c'est 0 au mois une est fausse.

Posté : 05 déc. 2006, 01:16
par DocType
Ajoloca, je rêve ou sur chacun des posts où on se croise on se complète ? :)

Posté : 05 déc. 2006, 01:19
par Ajoloca
Ajoloca, je rêve ou sur chacun des posts où on se croise on se complète ? :)
L'union fait la force !

Posté : 05 déc. 2006, 02:26
par Truc
j'essairait de faire plus vite la prochaine fois :lol:
Y a interet :twisted:
Je plaisante... j'ai tiré trop vite :oops:
L'union fait la force !
Le bon, la brute et le méchant...

Moi je suis le méchant, départager vous :lol:

Posté : 05 déc. 2006, 02:30
par Ajoloca
Bein...
Avec mes 58Kg et mon 1m70, je crois que j'ai pas le choix!