Reservation de salles en php

shishi1906 Messages postés 97 Statut Membre -  
JooS Messages postés 2705 Statut Membre -
Bonjour,

Voilà, j'ai un petit soucis au niveau de la réservation de mes salles dans mon script. Je m'explique actuellement l'utilisateur peut réserver 2 salles au mêmes moment, ce qui peut engendrer des soucis par la suite.

Du coup je voudrai faire en sorte que ceci ne soit plus possible.
Mais avec mon fichier de saisie de reservation et d'ajout de reservation je n'y arrive pas.
Quelqu'un pourrait-il m'aider ?

Script de la page saisie:

<div class="connexion">
<form method="post" action="ajoutreservation.php">
Choix de la reservation : <select name="idobjet">
<option value="0">---------------</option>

<?php
// connexion à la base
$base = mysql_connect ("localhost", "root", "") or die('Erreur de connexion '.mysql_error());

// sélection de la base
mysql_select_db('csc_apli',$base) or die('Erreur de selection '.mysql_error());

//Récuperation de la valeur du bouton par méthode POST
$bouton=$_POST['bouton'];

//écriture de la requête sql
$sql2= "SELECT * FROM objet WHERE idtypeobjet=$bouton";

//exécution de la requete
mysql_query($sql2) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

//$result2 prend la valeur de la requete
$result2=mysql_query($sql2);

//création de la liste déroulante voulue
while ($ligne=mysql_fetch_array($result2))
{
echo '<OPTION VALUE="'.$ligne["IDOBJET"].'">'.$ligne["LIBELLE"].'</OPTION>';
}

//bouton valider
echo '<input type="submit" value="Valider" class="invisible"/>';

//si la valeur du bouton = 2 (Salle dans la base de données) alors :
if($bouton==2)
{
echo '<br />
Choix du type de motif : <select name="idtypemotif">
<option value="0">---------------</option>';

//requete sql
$sql3= "SELECT * FROM type_motif";

//execution de la requete
mysql_query($sql3) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

//$result3 prend la valeur de la requete
$result3=mysql_query($sql3);

//création de la liste déroulante avec les information de $result3
while ($ligne=mysql_fetch_array($result3))
{
echo '<OPTION VALUE="'.$ligne["IDTYPEMOTIF"].'">'.$ligne["LIBELLE"].'</OPTION>';
}
//bouton valider
echo '<input type="submit" value="Valider" class="invisible"/>';

echo '<br />
Choix du motif : <select name="idmotif">
<option value="0">---------------</option>';

//écriture de la requête
$sql4= "SELECT * FROM motif ORDER by libelle ASC";

//execution de la requete
mysql_query($sql4) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

//$result4 prend la valeur de la requete précédente
$result4=mysql_query($sql4);

//création de la liste déroulante contenant les valeurs de $result4
while ($ligne=mysql_fetch_array($result4))
{
echo '<OPTION VALUE="'.$ligne["IDMOTIF"].'">'.$ligne["LIBELLE"].'</OPTION>';
}

//bouton valider
echo '<input type="submit" value="Valider" class="invisible"/>';
}
?>

<br />
Jour : <select name="jour">
<option value="0">---------------</option>
<option value="1"> 1</option>
<option value="2"> 2</option>
<option value="3"> 3</option>
<option value="4"> 4</option>
<option value="5"> 5</option>
<option value="6"> 6</option>
<option value="7"> 7</option>
<option value="8"> 8</option>
<option value="9"> 9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
</select>

<br />
Mois : <select name="moi">
<option value="0">---------------</option>
<option value="1"> Janvier</option>
<option value="2"> Février</option>
<option value="3"> Mars</option>
<option value="4"> Avril</option>
<option value="5"> Mai</option>
<option value="6"> Juin</option>
<option value="7">Juillet</option>
<option value="8"> Août</option>
<option value="9"> Septembre</option>
<option value="10"> Octobre</option>
<option value="11"> Novembre</option>
<option value="12"> Décembre</option>
</select>

<br />
Année : <select name="annee">
<option value="0">---------------</option>
<option value="2013"> 2013</option>
<option value="2014"> 2014</option>
<option value="2015"> 2015</option>
<option value="2016"> 2016</option>
<option value="2017"> 2017</option>
<option value="2018"> 2018</option>
<option value="2019">2019</option>
<option value="2020"> 2020</option>
<option value="2021"> 2021</option>
<option value="2022"> 2022</option>
<option value="2023"> 2023</option>
<option value="2024"> 2024</option>
</select>

<br />
Heure Début : <select name="hd">
<option value="0">---------------</option>
<option value="00:00">00:00</option>
<option value="00:15">00:15</option>
<option value="00:30">00:30</option>
<option value="00:45">00:45</option>
<option value="01:00">01:00</option>
<option value="01:15">01:15</option>
<option value="01:30">01:30</option>
<option value="01:45">01:45</option>
<option value="02:00">02:00</option>
<option value="02:15">02:15</option>
<option value="02:30">02:30</option>
<option value="02:45">02:45</option>
<option value="03:00">03:00</option>
<option value="03:15">03:15</option>
<option value="03:30">03:30</option>
<option value="03:45">03:45</option>
<option value="04:00">04:00</option>
<option value="04:15">04:15</option>
<option value="04:30">04:30</option>
<option value="04:45">04:45</option>
<option value="05:00">05:00</option>
<option value="05:15">05:15</option>
<option value="05:30">05:30</option>
<option value="05:45">05:45</option>
<option value="06:00">06:00</option>
<option value="06:15">06:15</option>
<option value="06:30">06:30</option>
<option value="06:45">06:45</option>
<option value="07:00">07:00</option>
<option value="07:15">07:15</option>
<option value="07:30">07:30</option>
<option value="07:45">07:45</option>
<option value="08:00"> 08:00</option>
<option value="08:15"> 08:15</option>
<option value="08:30"> 08:30</option>
<option value="08:45"> 08:45</option>
<option value="09:00"> 09:00</option>
<option value="09:15"> 09:15</option>
<option value="09:30"> 09:30</option>
<option value="09:45"> 09:45</option>
<option value="10:00"> 10:00</option>
<option value="10:15">10:15</option>
<option value="10:30">10:30</option>
<option value="10:45">10:45</option>
<option value="11:00">11:00</option>
<option value="11:15">11:15</option>
<option value="11:30">11:30</option>
<option value="11:45">11:45</option>
<option value="12:00">12:00</option>
<option value="12:15">12:15</option>
<option value="12:30">12:30</option>
<option value="12:45">12:45</option>
<option value="13:00">13:00</option>
<option value="13:15">13:15</option>
<option value="13:30">13:30</option>
<option value="13:30">13:45</option>
<option value="14:00">14:00</option>
<option value="14:15">14:15</option>
<option value="14:30">14:30</option>
<option value="14:45">14:45</option>
<option value="15:00">15:00</option>
<option value="15:15">15:15</option>
<option value="15:30">15:30</option>
<option value="15:45">15:45</option>
<option value="16:00">16:00</option>
<option value="16:15">16:15</option>
<option value="16:30">16:30</option>
<option value="16:45">16:45</option>
<option value="17:00">17:00</option>
<option value="17:15">17:15</option>
<option value="17:30">17:30</option>
<option value="17:45">17:45</option>
<option value="18:00">18:00</option>
<option value="18:15">18:15</option>
<option value="18:30">18:30</option>
<option value="18:45">18:45</option>
<option value="19:00">19:00</option>
<option value="19:15">19:15</option>
<option value="19:30">19:30</option>
<option value="19:45">19:45</option>
<option value="20:00">20:00</option>
<option value="20:15">20:15</option>
<option value="20:30">20:30</option>
<option value="20:45">20:45</option>
<option value="21:00">21:00</option>
<option value="21:15">21:15</option>
<option value="21:30">21:30</option>
<option value="21:45">21:45</option>
<option value="22:00">22:00</option>
<option value="22:15">22:15</option>
<option value="22:30">22:30</option>
<option value="22:45">22:45</option>
<option value="23:00">23:00</option>
<option value="23:15">23:15</option>
<option value="23:30">23:30</option>
<option value="23:45">23:45</option>
</select>

<br />
Heure Fin : <select name="hf">
<option value="0">---------------</option>
<option value="00:00">00:00</option>
<option value="00:15">00:15</option>
<option value="00:30">00:30</option>
<option value="00:45">00:45</option>
<option value="01:00">01:00</option>
<option value="01:15">01:15</option>
<option value="01:30">01:30</option>
<option value="01:45">01:45</option>
<option value="02:00">02:00</option>
<option value="02:15">02:15</option>
<option value="02:30">02:30</option>
<option value="02:45">02:45</option>
<option value="03:00">03:00</option>
<option value="03:15">03:15</option>
<option value="03:30">03:30</option>
<option value="03:45">03:45</option>
<option value="04:00">04:00</option>
<option value="04:15">04:15</option>
<option value="04:30">04:30</option>
<option value="04:45">04:45</option>
<option value="05:00">05:00</option>
<option value="05:15">05:15</option>
<option value="05:30">05:30</option>
<option value="05:45">05:45</option>
<option value="06:00">06:00</option>
<option value="06:15">06:15</option>
<option value="06:30">06:30</option>
<option value="06:45">06:45</option>
<option value="07:00">07:00</option>
<option value="07:15">07:15</option>
<option value="07:30">07:30</option>
<option value="07:45">07:45</option>
<option value="08:00"> 08:00</option>
<option value="08:15"> 08:15</option>
<option value="08:30"> 08:30</option>
<option value="08:45"> 08:45</option>
<option value="09:00"> 09:00</option>
<option value="09:15"> 09:15</option>
<option value="09:30"> 09:30</option>
<option value="09:45"> 09:45</option>
<option value="10:00"> 10:00</option>
<option value="10:15">10:15</option>
<option value="10:30">10:30</option>
<option value="10:45">10:45</option>
<option value="11:00">11:00</option>
<option value="11:15">11:15</option>
<option value="11:30">11:30</option>
<option value="11:45">11:45</option>
<option value="12:00">12:00</option>
<option value="12:15">12:15</option>
<option value="12:30">12:30</option>
<option value="12:45">12:45</option>
<option value="13:00">13:00</option>
<option value="13:15">13:15</option>
<option value="13:30">13:30</option>
<option value="13:30">13:45</option>
<option value="14:00">14:00</option>
<option value="14:15">14:15</option>
<option value="14:30">14:30</option>
<option value="14:45">14:45</option>
<option value="15:00">15:00</option>
<option value="15:15">15:15</option>
<option value="15:30">15:30</option>
<option value="15:45">15:45</option>
<option value="16:00">16:00</option>
<option value="16:15">16:15</option>
<option value="16:30">16:30</option>
<option value="16:45">16:45</option>
<option value="17:00">17:00</option>
<option value="17:15">17:15</option>
<option value="17:30">17:30</option>
<option value="17:45">17:45</option>
<option value="18:00">18:00</option>
<option value="18:15">18:15</option>
<option value="18:30">18:30</option>
<option value="18:45">18:45</option>
<option value="19:00">19:00</option>
<option value="19:15">19:15</option>
<option value="19:30">19:30</option>
<option value="19:45">19:45</option>
<option value="20:00">20:00</option>
<option value="20:15">20:15</option>
<option value="20:30">20:30</option>
<option value="20:45">20:45</option>
<option value="21:00">21:00</option>
<option value="21:15">21:15</option>
<option value="21:30">21:30</option>
<option value="21:45">21:45</option>
<option value="22:00">22:00</option>
<option value="22:15">22:15</option>
<option value="22:30">22:30</option>
<option value="22:45">22:45</option>
<option value="23:00">23:00</option>
<option value="23:15">23:15</option>
<option value="23:30">23:30</option>
<option value="23:45">23:45</option>
</select>

<br />
Salarié : <select name="idsalarie">
<option value="0">---------------</option>
<?php
// Connexion à la base de donnée
$cnx = mysql_connect("localhost", "root", "") or die("Impossible de se connecter");

// Selection de la base
$db = mysql_select_db("csc_apli") or die("Impossible de se connecter");

// Selection dans la base type_motif
$requete5="SELECT * FROM salarie ORDER BY nom ASC";

//Exécution de la requete
$result5=mysql_query($requete5);

//Selection de tous les champs
while ($ligne=mysql_fetch_array($result5))
{
echo '<OPTION VALUE="'.$ligne["IDSALARIE"].'">'.$ligne["NOM"].' '.$ligne["PRENOM"].'</OPTION>';
}
?>
</select>
<input type="submit" value="Enregistrer" />
</form>
</div>



Script de la page ajout :

<?php
// On commence par récupérer les champs
$idobjet=$_POST["idobjet"];
$idmotif=$_POST["idmotif"];
$jour=$_POST["jour"];
$moi=$_POST["moi"];
$annee=$_POST["annee"];
$hd=$_POST["hd"];
$hf=$_POST["hf"];
$idsalarie=$_POST["idsalarie"];

// On vérifie si le champs est vide
if(empty($idobjet) or empty($jour) or empty($moi) or empty($annee) or empty($hd) or empty($hf) or empty($idsalarie)){
echo '<font color="red">Attention, aucun champ ne peut rester vide !!!</font>';
}


// Aucun champ n'est vide, on peut enregistrer dans la table
else{

// connexion à la base
$base = mysql_connect ("localhost", "root", "") or die('Erreur de connexion '.mysql_error());

// sélection de la base
mysql_select_db('csc_apli',$base) or die('Erreur de selection '.mysql_error());

//on vérifie si la salle n'est pas déjà prise
$sql1 = "SELECT DATERES, HEUREDEB, HEUREFIN FROM reservation WHERE $annee/$moi/$jour=DATERES AND HEUREDEB BETWEEN $hd AND $hf";
$res1 = mysql_query($sql1);

if($res1!=false){
echo "La réservation n'est pas disponible pour cet horaire";
}
else{

// on écrit la requête sql
$sql = "INSERT INTO reservation (IDRES, IDSALARIE, IDOBJET, IDMOTIF, DATERES, HEUREDEB, HEUREFIN) VALUE ('', '$idsalarie', '$idobjet', '$idmotif', '$annee/$moi/$jour', '$hd', '$hf')";

// on éxécute la requête SQL
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

// on affiche le résultat pour le visiteur
echo '<div class="connexion">Vos infos on été ajoutées.</div>';

}
// on ferme la connexion
mysql_close();

}
?>
A voir également:

3 réponses

splin3 Messages postés 49 Statut Membre 3
 
Tu fais un script énorme tu es pensé au boucles en PHP ?

Cordialement
0
shishi1906 Messages postés 97 Statut Membre
 
Oui je sais pour le script énorme, et je m'en excuse le truc c'est que je suis en fin de stage et que demain j'ai finis mon stage donc j'aimerai bien terminé, l'optimisation du script en lui même a peux d'importance.
0
JooS Messages postés 2705 Statut Membre 228
 
Salut,

1 - T'aurais pu économiser une centaine de ligne en utilisant des boucles.

Exemple pour les mois :
$months = array(1=>'Janvier', 2=>''Février); // Etc

foreach($months AS $id=>$value)
    echo '<option value="'.$id.'">'.$value.'</option>';

Exemple pour les années :
$start = date('Y');
$end = $start + 10;

for($i=$end; $i > $start; $i--)
    echo '<option value="'.$i.'">'.$i.'</option>';

2 - Tu oublies très souvent de fermer tes balise "select".

3 - Tu exécutes mysql_query deux fois pour chaque requête, pourquoi ? une seule fois suffirait.
$req = mysql_query($sql4) or die('Erreur SQL ! ' .$sql . '<br>' . mysql_error()); 


4 - Avant d'utiliser (faire appel à) tes variables, vérifie qu'elles existent avant, ou bien vérifie au minimum que le formulaire a bien et bien été envoyé.
if(isset($_POST['bouton'])) $bouton = $_POST['bouton'];
else if // Autres vérifications si il y en a
else // Erreur, variable manquante, soit le formulaire n'a pas été envoyé, soit l'utilisateur a supprimer volontairement le champs "bouton" du formulaire avant d'envoyer ce dernier.

Je n'ai pas pu lire bien plus, désolé.
Mettez en résolu quand c'est résolu -.- ...
0