recuperer données d'un formulaire HTML

recuperer données d'un formulaire HTML - Perl - Programmation

Marsh Posté le 21-08-2007 à 17:13:58    

bonjour ,
 
j'ai un petit soucis avec la recuperation des données d'un formulaire de contact
 
sur ma page contact.html j'ai un formulaire avec un bouton envoyer.
 
j'aimerai qu'un script perl/cgi recupere ces données et me les envoie par mail ou me les stock dans un fichier.
 
si vous avez une idée n'hésitez pas à laisser un message...
 
merci

Reply

Marsh Posté le 21-08-2007 à 17:13:58   

Reply

Marsh Posté le 21-08-2007 à 17:37:43    

normalement pas de soucis pour faire ça.
Peux-tu nous montrer ton script perl qu'on voit ou ça peche?

Reply

Marsh Posté le 21-08-2007 à 17:48:47    

anapajari a écrit :

normalement pas de soucis pour faire ça.
Peux-tu nous montrer ton script perl qu'on voit ou ça peche?


 
anapajari le soucis cest que je n'est aucune idée de la synthax de ce script
 
j'aurai du mettre novice en entete... :sarcastic:

Reply

Marsh Posté le 22-08-2007 à 09:32:46    

Euh donc juste exactement tu attends quoi?
Que quelqu'un te fasse le truc en entier?  
Désolé mais ça sera pas moi :o
 
Va falloir apprendre PERL [:spamafote]

Reply

Marsh Posté le 22-08-2007 à 20:33:17    

non juste de laide de quelqu'un qu'aurai deja fait ca
 
cest interdit de poser un message quand on sait pas
 
 
c'est pas le but ??!!....

Reply

Marsh Posté le 29-08-2007 à 15:19:50    

Salut, je vais te donner vite fait quelques infos qui te permettront d'avancer. (je te donnerai un exemple de code que j'ai fait y'a environ 5 ans à mes débuts en prog).
 
Tout d'abord je suppose que ton serveur est configuré pour executer les scripts en perl et que tu as dans ton code HTML un truc du style:
<form action="inscription.pl" method="get">
 
Ici mon script s'appelle inscription.pl.
 
Dans mon code HTML, j'ai mis des zones de saisie du style
<input type="text" name="nom_client">
 
Je récupère cette saisie en Perl de la manière suivante:
 
$nom_variable=param("nom du champ" );
Donc dans notre cas on a:
$nom_client=param('nom_client');
 
Tu fais de même pour tous les paramètres.
 
Je poste dans le message suivant un code fait y'a longtemps.
 


---------------
Pour mon mémoire de recherche sur les spams faîtes vous plaisir: user2@memoire-spam.info
Reply

Marsh Posté le 29-08-2007 à 15:21:24    

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

Marsh Posté le 29-08-2007 à 15:22:29    

PS: le code ci-dessus n'est pas parfait ;)
Je débutais donc voilà quoi. (utilise le module strict quand tu commences ;) et my $variable pour déclarer tes variables + utiliser des fonctions pour rendre le code + compréhensible etc...).
 
Tu ne pourras pas l'exécuter directement. Tu peux juste t'en inspirer pour te guider.
Désolé il est pas trop commenté (mes mauvaises habitudes de l'époque :p).
Je t'ai juste donné ce code à titre d'exemple ;)
 
PS: tu pourras également voir que j'utilise le module DBI et que je me connecte à une bdd sous MySQL (ca pourra peut-être t'aider pour + tard si tu souhaites aller plus loin).
 
A+


Message édité par Ricolla75 le 29-08-2007 à 15:42:54

---------------
Pour mon mémoire de recherche sur les spams faîtes vous plaisir: user2@memoire-spam.info
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed