Résolu Pb date

Eléphant du PHP | 223 Messages

09 oct. 2009, 11:43

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
Modifié en dernier par hashut le 13 oct. 2009, 17:27, modifié 1 fois.

ViPHP
ViPHP | 1136 Messages

09 oct. 2009, 13:04

Salut ,

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

Good luck ,
Ch.

Eléphant du PHP | 223 Messages

09 oct. 2009, 14:54

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

Eléphant du PHP | 223 Messages

09 oct. 2009, 18:32

re
je comprend pas between
un peu aude svp

ViPHP
ViPHP | 2291 Messages

09 oct. 2009, 18:35

Salut,

C'est plus facile avec ton code pour te donner un coup de main.
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Eléphant du PHP | 223 Messages

09 oct. 2009, 18:49

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>";

Kran
Invité n'ayant pas de compte PHPfrance

10 oct. 2009, 18:40

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

Eléphant du PHP | 223 Messages

10 oct. 2009, 19:40

oki merci je pourais mate sa que lundi ou mardi
merci

Eléphant du PHP | 223 Messages

13 oct. 2009, 17:27

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>"; }