Page 1 sur 1

Résolu Pb date

Posté : 09 oct. 2009, 11:43
par hashut
Bonjour,

je doit crée un formulaire de réservation, mon problème je c'est pas comment faire pour vérifier que la date choisi n'est pas deja utiliser
en un mot "Vérifier si une date n'est pas comprise entre deux autres date de la base"
dans ma table nom prenom ext ..... Date_debut Date_fin
pouvez vous m'aide

Re: Pb date

Posté : 09 oct. 2009, 13:04
par stopher
Salut ,

en sql, le mot clef BETWEEN te sortira d'affaire ;-)

Good luck ,
Ch.

Re: Pb date

Posté : 09 oct. 2009, 14:54
par hashut
Mais je la vérifie via php la date
je veut en fait que si la date ne se trouve pas entre date debut et fin ok sinon non

Re: Pb date

Posté : 09 oct. 2009, 18:32
par hashut
re
je comprend pas between
un peu aude svp

Re: Pb date

Posté : 09 oct. 2009, 18:35
par dunbar
Salut,

C'est plus facile avec ton code pour te donner un coup de main.

Re: Pb date

Posté : 09 oct. 2009, 18:49
par hashut
je veut que si un jour entre DateD et DateF sont deja dans la base false

Code : Tout sélectionner

$DateD="$AnneesD-$MoisD-$JourD"; $DateF="$AnneesF-$MoisF-$JourF"; $valid="1"; $db = mysql_connect($serveur, $user, $passw); mysql_select_db('$bd_base',$db); $id = 0 ; $sql = "INSERT INTO reservation VALUES('$id','$ResaNom','$ResaPrenom','$ResaDress','$ResaCp','$ResaVille','$ResaTel','$ResaMail','$DateD','$DateF','$valid')"; mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error()); echo"La r&eacute;servation entre les dates du <B>$DateD</B> au <b>$DateF</b><BR><BR>"; echo"<b>$ResaNom $ResaPrenom</b><BR>$ResaDress<BR>$ResaCp $ResaVille<BR><BR>"; echo"T&eacute;l&eacute;phone : $ResaTel<BR>"; if(empty($ResaMail)){ echo"<BR>"; }else{ echo"Email : $ResaMail<BR><BR>"; } echo"<B><CENTER>&agrave; &eacute;t&eacute;s ajouter et valider</center></B>";

Re: Pb date

Posté : 10 oct. 2009, 18:40
par Kran
Si tes champs countenant $DateD et $DateF sont au stockés au format date dans ta base,
fais un "select count(*) as nb_overreservation from reservation where (champ_DateD between $DateD and $DateF) or (champ_DateF between $DateD and $DateF) "

si nb_overresarvation > 0 tu sauras que d'autres réservations chevauchent celle que tu essayes d'ajouter.


Sinon pour traiter les dates de tous formats plus ou moins étranges en php tu as :

Pour transformer une date au format plus ou moins chelou en timestamp :
int mktime ( int hour , int minute , int second , int month , int day , int year , int is_dst )

Pour les formats un peu mieux normalisés, voir du côté de la fonction strtotime

Genre :
$timestampD=mktime(0,0,0,$MoisD,$JourD,$AnneesD);
$timestampF=mktime(0,0,0,$MoisF,$JourF,$AnneesF);

Ensuite, tu fais $diff=$timestampF-$timestampD et tu obtiens la différence en secondes entre les deux dates

Cette deuxième partie ne réponds pas exactement a la question posée mais dans l'contexte j'imagine que ça peut te donner des idées pour la suite ^^

Re: Pb date

Posté : 10 oct. 2009, 19:40
par hashut
oki merci je pourais mate sa que lundi ou mardi
merci

Re: Pb date

Posté : 13 oct. 2009, 17:27
par hashut
Merci pour tous voici le code qui fonctionne

Code : Tout sélectionner

$DateDe="$AnneesD-$MoisD-$JourD"; $DateFi="$AnneesF-$MoisF-$JourF"; $valid="1"; $db = mysql_connect($serveur, $user, $passw); mysql_select_db('$bd_base',$db); $sql = "SELECT * FROM reservation WHERE (DateD BETWEEN '$DateDe' AND '$DateFi') or (DateF BETWEEN '$DateDe' AND '$DateFi')"; $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); while($data = mysql_fetch_assoc($req)) { $ResaNo=''.$data['ResaNom'].''; $ResaPreno =''.$data['ResaPrenom'].''; $ResaDres =''.$data['ResaDress'].''; $ResaC =''.$data['ResaCp'].''; $ResaVill =''.$data['ResaVille'].''; $ResaTe =''.$data['ResaTel'].''; $ResaMai =''.$data['ResaMail'].''; $DateD =''.$data['DateD'].''; $DateF =''.$data['DateF'].''; if(!empty($ResaNo)){ echo"Il y a d&eacute;ja des r&eacute;servations entre les dates du <B>$DateD</B> au <b>$DateF</b><BR><BR>"; echo"<b>$ResaNo $ResaPreno</b><BR>$ResaDres<BR>$ResaC $ResaVill<BR><BR>"; echo"T&eacute;l&eacute;phone : $ResaTe<BR>"; if(empty($ResaMai)){ echo"<BR>"; }else{ echo"Email : $ResaMai<BR><BR>"; } } } if(empty($ResaNo)){ $DateD="$AnneesD-$MoisD-$JourD"; $DateF="$AnneesF-$MoisF-$JourF"; $valid="1"; $ResaNom = $_POST['ResaNom']; $ResaPrenom = $_POST['ResaPrenom']; $ResaDress = $_POST['ResaDress']; $ResaCp = $_POST['ResaCp']; $ResaVille = $_POST['ResaVille']; $ResaTel = $_POST['ResaTel']; $ResaMail = $_POST['ResaMail']; $db = mysql_connect($serveur, $user, $passw); mysql_select_db('$bd_base',$db); $id = 0 ; $sql = "INSERT INTO reservation VALUES('$id','$ResaNom','$ResaPrenom','$ResaDress','$ResaCp','$ResaVille','$ResaTel','$ResaMail','$DateD','$DateF','$valid')"; mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error()); echo"La r&eacute;servation entre les dates du <B>$DateDe</B> au <b>$DateFi</b><BR><BR>"; echo"<b>$ResaNom $ResaPrenom</b><BR>$ResaDress<BR>$ResaCp $ResaVille<BR><BR>"; echo"T&eacute;l&eacute;phone : $ResaTel<BR>"; if(empty($ResaMail)){ echo"<BR>"; }else{ echo"Email : $ResaMail<BR><BR>"; } echo"<B><CENTER>&agrave; &eacute;t&eacute;s ajouter et valider</center></B>"; }