Interval entre deux date ou timestamp

Eléphant du PHP | 71 Messages

04 déc. 2006, 23:41

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:
Modifié en dernier par Moker le 04 déc. 2006, 23:43, modifié 1 fois.

Mammouth du PHP | 1776 Messages

04 déc. 2006, 23:42

ba un petit test en php non ?
un if :wink:

Eléphant du PHP | 71 Messages

04 déc. 2006, 23:47

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:

Mammouth du PHP | 1776 Messages

04 déc. 2006, 23:57

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 ^^

Mammouth du PHP | 1776 Messages

05 déc. 2006, 00:11

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

ViPHP
ViPHP | 1961 Messages

05 déc. 2006, 00:37

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).
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Eléphant du PHP | 71 Messages

05 déc. 2006, 00:47

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 :)

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

05 déc. 2006, 00:54

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.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 71 Messages

05 déc. 2006, 00:55

cette fonction aussi colle parfaitement avec le resultat desiré :D

merci à toi aussi Ajoloca :wink:

Eléphant du PHP | 71 Messages

05 déc. 2006, 00:58

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:

ViPHP
ViPHP | 1961 Messages

05 déc. 2006, 01:02

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.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Mammouth du PHP | 1776 Messages

05 déc. 2006, 01:16

Ajoloca, je rêve ou sur chacun des posts où on se croise on se complète ? :)

ViPHP
ViPHP | 1961 Messages

05 déc. 2006, 01:19

Ajoloca, je rêve ou sur chacun des posts où on se croise on se complète ? :)
L'union fait la force !
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

05 déc. 2006, 02:26

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:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

ViPHP
ViPHP | 1961 Messages

05 déc. 2006, 02:30

Bein...
Avec mes 58Kg et mon 1m70, je crois que j'ai pas le choix!
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein