"); $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; } ?>