#!/perl/bin/perl
use CGI qw(:all);
use DBI;
use verif;
$|=1;
 
$num_semaine=param('num_semaine');       # récupération des informations saisies dans le formulaire
$nom_client=param('nom_client');
$type_pension=param('type_pension');
$prenom_client=param('prenom_client');
$adresse_client=param('adresse_client');
 
if($adresse_client eq '')               #si pas d'adresse reçue du formulaire alors on l'obtient par cookie
{
             $adresse_client=cookie('adresse_client');
             print header();
}
else
{
             $cookie=cookie(                                   #création d'un cookie qui servira d'authentification
                         -name => 'adresse_client',
                         -value => $adresse_client,
                         -expires => '+5M'
                         );
             print header(-cookie=>$cookie);
}
 
 
$duree_location=param('duree_location');
$nb_personnes=param('nb_personnes');
$num_emplacement=param('num_emplacement');
 
 
 
print "<HTML>\n<BODY>\n";
print "\t<h1><strong><u><center>Validation de l'inscription: <BR><BR> </h1></strong></u></center>\n";
 
# verif::exp_reg reçoit en paramètres les informations saisies par l'utilisateur
# Elle retourne un tableau dont le contenu des cases vaut 1 si l'information est correcte et -1 dans le cas contraire
# Contenu du tableau retourné (les cases valant 1 ou -1)
# n°case --> quelle information est correcte ou non ?
# 0 --> nom       1-->prenom       2-->adresse (si elle n'est pas déjà utilisée)    3-->duree location
# 4-->num_emplacement   5-->nb_personnes   6-->si capacité de l'emplacement est suffisante    7--> si emplacement libre pdt période
 
@tab=&verif::exp_reg($nom_client,$prenom_client,$adresse_client,$duree_location,$num_emplacement,$nb_personnes,$num_semaine);
$valide='OK';
for($i=0;$i<=$#tab;$i++)
{
                        if($tab[$i]!=1)           #si l'une des cases n'est pas bonne
                        {
                                       $valide='ERREUR';
                        }
}
if ($valide eq 'OK')  # si tous les paramètres sont corrects alors on insère le client
{
            print "\tLes paramètres saisis sont corrects<br>\n";
            $bd=DBI->connect("DBI:mysql:drakkar:127.0.0.1",        #connexion à la base de données
                "utilisateurs",          #nom d'utilisateur
                "btsig"                  #mot de passe
                );
            if (defined ($bd))           #si la connexion à la base de données a pu s'effectuer
            {
                            $req_date="SELECT sysdate()";   #requete pour obtenir la date actuelle
                            $a=$bd->prepare($req_date);
                            $a->execute();
                            $date=$a->fetchrow_array();
 
                            #requete pour calculer l'accompte à verser (=50% du montant dû)
                            $montant="SELECT prix_location FROM emplacement WHERE num_emplacement=$num_emplacement";
                            $m=$bd->prepare($montant);
                            $m->execute();
                            $prix_location=$m->fetchrow_array();
 
                            $derniere_semaine=$num_semaine+$duree_location-1;    #calcul de la dernièe semaine de location
                            $Montant_accompte_verse=0.5*($derniere_semaine-$num_semaine+1)*$prix_location;  #calcul de l'accompte à verser (= 50% du montant dû)
 
                            #requete d'insertion du nouveau client
                            $requete="INSERT INTO client VALUES ('',\"$nom_client\",\"$prenom_client\",\"$adresse_client\",\"$nb_personnes\",\"$duree_location\",\"$date\",\"$Montant_accompte_verse\",\"$type_pension\",\"$num_emplacement\",\"$num_semaine\" )";
                            $n=$bd->prepare($requete);
                            $n->execute();
 
#modification de l'état de l'emplacement (de Libre à en Attente de réservation) de la semaine $num_semaine jusqu'à la semaine $num_semaine+$duree_location-1
                            $update_determiner="UPDATE determiner SET etat_emplacement='A' WHERE num_emplacement=$num_emplacement AND num_semaine BETWEEN $num_semaine AND $derniere_semaine;";
                            $b=$bd->prepare($update_determiner);
                            $b->execute();
                            if ((defined ($n))&&(defined ($a))&&(defined($b)))
                            {
                             print "\tL'inscription s'est effectuée correctement !";
                            }
                            else
                            {
                             print "\tErreur lors de l'inscription !\n";
                            }
                            $n->finish();
                            $m->finish();
                            $a->finish();
                            $b->finish();
                            $bd -> disconnect();
            }
            else
            {
                            #print header ();
                            print "<HTML>\n<BODY>\n";
                            print "\tErreur lors de la connexion à la base de données !!";
            }
}
else  # sinon si tous les paramètres retournés ne sont pas corrects, alors on refait un formulaire pour resaisir ce qui est incorrect
{
            print "\tTous les paramètres que vous avez saisi ne sont pas corrects.<br>\n";
            print "\t<form action=\"inscription.pl\" method=\"get\">";
            print "\t<input type=\"hidden\" name=\"type_pension\" value=$type_pension>";   #car ce paramètre n'est pas à resaisir
            if($tab[0]==1)    #si le nom est correct
            {
                           print "\tVotre nom: $nom_client<br><br>\n";
                           print "\t<input type=\"hidden\" name=\"nom_client\" value=$nom_client>";  #les paramètres corrects ne sont pas à resaisir
            }
            else
            {
                           print "\t<font color=\"red\">\n";
                           print "\tVotre nom est incorrect (soit le nom comporte des chiffres ou caractères spéciaux, soit le nom est déjà utilisé) !!<br> Veuillez le resaisir: <input type=\"text\" name=\"nom_client\"></font><br><br>\n";
            }
            if($tab[1]==1)
            {
                           print "\tVotre prénom: $prenom_client<br><br>\n";
                           print "\t<input type=\"hidden\" name=\"prenom_client\" value=$prenom_client>"; #les paramètres corrects ne sont pas à resaisir
            }
            else
            {
                           print "\t<font color=\"red\">\n";
                           print "\tVotre prénom est incorrect (soit votre prénom comporte des chiffres ou caractères spéciaux, soit le nom est déjà utilisé) !!<br>\t Veuillez le resaisir: <input type=\"text\" name=\"prenom_client\"></font><br><br>\n";
            }
            if(($tab[2]==1)&&($adresse_client=~ m/^[0-9]+, [a-zA-Zéàè ]+$/))   #si l'adresse est libre et si exp régulière de l'adresse
            {
                           print "\tVotre adresse: $adresse_client<br><br>\n";
            }
            else
            {
                           print "\t<font color=\"red\">\n";
                           print "\tVotre adresse  $adresse_client est incorrecte (votre adresse semble déjà appartenir à un autre client) !!<br> Veuillez la resaisir: <input type=\"text\" name=\"adresse_client\"></font><br><br>\n";
            }
            if(($tab[3]==1)&&($tab[6]!=1)&&($tab[7]!=1))
            {
                           print "\tDurée de la location: $duree_location<br><br>\n";
                           print "\t<input type=\"hidden\" name=\"duree_location\" value=$duree_location>";     #les paramètres corrects ne sont pas à resaisir
            }
            elsif(($tab[3]==-1)&&($tab[6]!=-1)&&($tab[7]!=-1))
            {
                           print "\t<font color=\"red\">\n";
                           print "\tLa durée de location est incorrecte (doit être un nombre) !!<br> Veuillez la resaisir: <input type=\"text\" name=\"duree_location\"></font><br><br>\n";
            }
            if(($tab[6]==1)&&($tab[7]==1))  # si la capacité dest insuffisante, ou si l'emplacement n'est pas libre pendant la période souhaitée
            {
                           print "\tL'emplacement $num_emplacement est libre pour la semaine $num_semaine pendant la période souhaitée ($duree_location semaines). <br><br>\n";
                           print "\t<input type=\"hidden\" name=\"nb_personnes\" value=$nb_personnes>\n";       #les paramètres corrects ne sont pas à resaisir
                           print "\t<input type=\"hidden\" name=\"num_semaine\" value=$num_semaine>\n";         #les paramètres corrects ne sont pas à resaisir
                           print "\t<input type=\"hidden\" name=\"num_emplacement\" value=$num_emplacement>\n"; #les paramètres corrects ne sont pas à resaisir
            }
            else  #sinon on resaisit le nb de personnes + duree_location + numéro de semaine + emplacement désiré
            {
                           print << "END_HTML";
                           <font color="red">
                           Une erreur nous empêche de valider l'inscription: soit l'emplacement n'est pas disponible pour la période souhaitée ($duree_location semaines à partir de la semaine $num_semaine), soit sa capacité est insuffisante, soit vous avez effectué des erreurs lors de la saisie !!<br>
                           Nous vous invitons donc à resaisir les informations suivantes:
                           <br>
                            Le nombre de personnes pour la réservation:
                              <select name="nb_personnes">
                              <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>
                              </select>
                           <br>
                           La durée de location(nombre entier): <input type="text" name="duree_location">
                           <br>
                           Le numéro de la semaine(nombre entier): <input type="text" name="num_semaine">
                           <br>
                           L'emplacement désiré (nombre entier) : <input type="text" name="num_emplacement">
                           <a href="emplacement.pl" target=_blank>(Connaitre la liste
                           des emplacements disponibles)</a></font> <br>
                            <br>
END_HTML
            }
            print "\tLe type de pension sélectionné: $type_pension<br><br>";
            print "\t<center><input type=\"submit\" value=\"Valider\"></center>\n";
}
print "</BODY>\n</HTML>\n";
 
 
 
 
 ---------------
			
Pour mon mémoire de recherche sur les spams faîtes vous plaisir: user2@memoire-spam.info