#!/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