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é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éléphone : $ResaTel<BR>";
if(empty($ResaMail)){
echo"<BR>";
}else{
echo"Email : $ResaMail<BR><BR>";
}
echo"<B><CENTER>à été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éja des ré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élé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é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éléphone : $ResaTel<BR>";
if(empty($ResaMail)){
echo"<BR>";
}else{
echo"Email : $ResaMail<BR><BR>";
}
echo"<B><CENTER>à étés ajouter et valider</center></B>";
}