");
$existe_borne=mysqli_num_rows($reponse);
if($existe_borne > 0) {
$compte=mysqli_fetch_object($reponse);
$club=$compte->id_club;
$borne_ok=1;
}
/* Controle si un nom a été saisi */
if($nom_resa == "" and $borne_ok==1) {
$resa_ok=-1;
}
$requete="SELECT duree_borne FROM quota_resa WHERE id_club='$club'";
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
");
$existe=mysqli_num_rows($reponse);
if($existe > 0) {
$quota_resa=mysqli_fetch_object($reponse);
$duree=$quota_resa->duree_borne;
$duree_sec=$horaire_fin - $horaire_debut;
$duree_h=round($duree_sec / 3600);
if($duree_h > $duree and $quota_resa->duree_borne > 0) {
$resa_ok=0;
}
}
/* tableau contenant les terrains à reserver */
if($horaires_ok==1 and $borne_ok==1 and $resa_ok>0) {
$terrain_resa=0;
$message="";
$terrains=$_POST['terrains'];
/* Pour chaque terrain contrôler que les heures passent */
if(count($terrains)==0) {
$message="Aucun terrain n'a ete selectionné. Veuillez recommencer.";
}
else {
for ($i=0;$i");
$terrain=mysqli_fetch_object($reponse);
/* controle pour chaque demi-heure */
$ts_debut=mktime($heure_debut, $min_debut, 0, $mois, $jour, $annee);
$ts_fin=mktime($heure_fin, $min_fin, 0, $mois, $jour, $annee);
$ts_interv=$ts_debut;
while($interv_occupe==0 and $ts_interv<$ts_fin) {
$ts_fin_interv=$ts_interv + (30 * 60);
$h_interv_deb=date("H:i:00", $ts_interv);
$h_interv_fin=date("H:i:00", $ts_fin_interv);
$requete="SELECT id_reservation, heure_resa_deb, heure_resa_fin FROM reservation WHERE date_resa='$annee-$mois-$jour' AND id_reservable='$id_terrain' AND ((heure_resa_deb >= '$h_interv_deb' AND heure_resa_deb<'$h_interv_fin') OR (heure_resa_fin>'$h_interv_deb' AND heure_resa_fin<='$h_interv_fin') OR (heure_resa_deb<='$h_interv_deb' AND heure_resa_fin>='$h_interv_fin'))";
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
");
$existe=mysqli_num_rows($reponse);
if($existe>0) {
$interv_occupe=1;
}
$ts_interv=$ts_fin_interv;
}
/* si l'intervalle est occupé */
if($interv_occupe==1) {
$message="La reservation n'a pas ete prise en compte. Le terrain $terrain->nom est occupe a ces horaires ou la reservation n'a pas ete validee par l'administrateur !";
}
else {
$terrain_resa=$terrain_resa+1;
$debut="$heure_debut:$min_debut:00";
$fin="$heure_fin:$min_fin:00";
$date="$annee-$mois-$jour";
/* Positionne le flag de validation */
if(is_numeric($type)) {
if($adverse_ok==1)
$requete="INSERT INTO reservation(type, type_reservation, id_joueur, heure_resa_deb, heure_resa_fin, date_resa, id_reservable, validation, id_joueur_adverse, id_rubrique) VALUES('Autre', '$nom_resa', '$id_joueur', '$debut','$fin','$date', '$id_terrain', '1','$adverse_bdd->id_joueur','$type')";
else
$requete="INSERT INTO reservation(type, type_reservation, id_joueur, heure_resa_deb, heure_resa_fin, date_resa, id_reservable, validation, id_rubrique) VALUES('Autre', '$nom_resa', '$id_joueur', '$debut','$fin','$date', '$id_terrain', '1','$type')";
}
else {
if($adverse_ok==1)
$requete="INSERT INTO reservation(type, type_reservation, id_joueur, heure_resa_deb, heure_resa_fin, date_resa, id_reservable, validation, id_joueur_adverse, id_rubrique) VALUES('$type', '$nom_resa', '$id_joueur', '$debut','$fin','$date', '$id_terrain', '1','$adverse_bdd->id_joueur','0')";
else
$requete="INSERT INTO reservation(type, type_reservation, id_joueur, heure_resa_deb, heure_resa_fin, date_resa, id_reservable, validation, id_rubrique) VALUES('$type', '$nom_resa', '$id_joueur', '$debut','$fin','$date', '$id_terrain', '1','0')";
}
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
");
$requete="SELECT nom FROM reservable WHERE id_reservable='$id_terrain'";
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
");
$terrain=mysqli_fetch_object($reponse);
$message.="La reservation a ete prise en compte pour le terrain $terrain->nom.";
/* Message de Log */
$date_log=date("Y-m-d",time());
$heure_log=date("H:i:00",time());
$requete="SELECT MAX(id_reservation) FROM reservation";
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
");
$max_resa=mysqli_fetch_array($reponse);
/* Durée résa */
$debut_resa=mktime($heure_debut, $min_debut, 0, $mois, $jour, $annee);
$fin_resa=mktime($heure_fin, $min_fin, 0, $mois, $jour, $annee);
$duree=$fin_resa-$debut_resa;
$heure=$duree/3600;
$min=($duree-($heure*3600))/60;
if($min<10) { $min="0".$min; }
$duree_resa="$heure:$min";
/* Message de log de la forme Type message - joueur - durée - type_résa - message */
$requete="SELECT nom, prenom FROM joueur WHERE id_joueur='$id_joueur'";
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
");
$joueur=mysqli_fetch_object($reponse);
if(is_numeric($type)) {
$req="SELECT nom FROM rubriques_resa WHERE id_rubrique='$type'";
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
");
$rubrique=mysqli_fetch_object($reponse);
$type=$rubrique->nom;
}
$message_log="Creation - $joueur->nom $joueur->prenom - $jour/$mois/$annee - $terrain->nom - $heure_debut:$min_debut - $duree_resa - $type - $nom_resa - Reservation enregistree";
$requete="INSERT INTO log_reservation(date,heure,id_reservation,id_joueur,message, id_club) VALUES('$date_log','$heure_log','$max_resa[0]','$id_joueur','$message_log','$club')";
$reponse=mysqli_query($db_connection, $requete) or die ("Erreur no".mysqli_errno($db_connection)()." : ".mysqli_error($db_connection)()."
");
}
}
}
}
/* Les horaires ne sont pas bons */
else if($horaires_ok==0) {
$message="Les horaires sont identiques ou l'horaire de fin se trouve avant l'horaire de debut.";
}
else if($borne_ok==0) {
$message="La borne n'est pas connectee. La reservation n'a pas ete prise en compte.";
}
else if($resa_ok==0) {
$message="Vous avez depasse la duree maximale de la reservation avec la borne.";
}
else if($resa_ok==-1) {
$message= "Un nom doit obligatoirement être saisi dans la case appropriee.";
}
else {
$message="Vous ne pouvez pas effectuer une reservation dans le passé !!";
}
return $message;
}
/* Les horaires sont au format Unix timestamp) */
function controleHoraires($debut, $fin) {
$now=time();
if($debut < $now) {
$res=-1;
}
else if($fin<=$debut) {
$res=0;
}
else if($debut>$fin) {
$res=0;
}
else {
$res=1;
}
return $res;
}
?>