formulaire avec cases et menus déroulants

Par albert, il y a 14 ans


Bonjour,

j'ai suivi très attentivement le tutoriel sur les formulaires php avec contact.html et contact.php avec des champs
http://www.grafikart.fr/tutoriels/php/formulaire-php-21
Je souhaite faire la même chose avec des cases à cocher, des menus déroulants, listes, menu. C'est à dire que je souhaite controler tous ces éléments du formulaire.
Comment faire?
Merci beaucoup de bien vouloir m'aider.
Albert

voici ma page html:
<table border="2" width="50%" align="center">
<tr>
<td width="100%" bgcolor="#A6CAF0">

<form name="form" action="validation.php" method="post">

<fieldset>
<br />
<legend><h3>Vos coordonnées</h3></legend>

<table border="0">
<tr>
<td align="left">Nom</td>
<td><input type="text" size="20" name="nom" value="" /></td>
</tr>

<tr>
<td align="left">Prénom</td>
<td><input type="text" size="20" name="prenom" value="" /></td>
</tr>

<tr>
<td align="left">E-Mail</td>
<td><input type="text" size="20" name="email" value="" /></td>
</tr>

<tr>
<td align="left">Ville</td>
<td><input type="text" size="20" name="ville" value="" /></td>
</tr>

<tr>
<td align="left">Code postal</td>
<td><input type="text" size="5" name="code" value="" /></td>
</tr>

<tr>
<td align="left">Département</td>
<td>
<select name="departement" size="3">
<option>Seine-Saint-Denis</option>
<option>Val de Marne</option>
<option>Seine et Marne</option>
<option>Paris</option>
<option>Yvelines</option>
<option>Essonne</option>
<option>Hauts de Seine</option>
<option>Val d'Oise</option>
</select>
</td>
</tr>
</table>
</fieldset>

<fieldset>
<br />
<legend><h3>Votre type d'emploi</h3></legend>

<table border="0">
<tr>
<td><input type="radio" name="emploi" value="enseignement" /></td>
<td>enseignement</td>
<td><input type="radio" name="emploi" value="éducation" /></td>
<td>éducation</td>
<td><input type="radio" name="emploi" value="administration" /></td>
<td>administration</td>
</tr>
</table>

</fieldset>

<fieldset>
<br />
<legend><h3>Vos loisirs préférés</h3></legend>

<input type="checkbox" name="loisir]" value="Son-vidéo" />Son-vidéo
<input type="checkbox" name="loisir]" value="Télévision" />Télévision
<input type="checkbox" name="loisir]" value="Cinéma" />Cinéma<br />
<input type="checkbox" name="loisir]" value="Programmation" />Programmation
<input type="checkbox" name="loisir]" value="Sports" />Sports
<input type="checkbox" name="loisir]" value="Internet" />Internet
<input type="checkbox" name="loisir]" value="Son-vidéo" />Son-vidéo

</fieldset>

<fieldset>
<br />
<legend><h3>Écrivez votre message</h3></legend>

<textarea name="message" rows="3" cols="40"></textarea>

</fieldset>

<hr size="3" noshade="noshade" />

<div align="center">
<input type="submit" name="enregistrer" value="Enregistrer" onClick="verifForm(this.form)" />
<input type="reset" name="annuler" value="Annuler" />
</div>

</form>
</td>
</tr>
</table>

et voici ma page php
<?php
if(isset($_POST) && isset($_POST"nom"]) && isset($_POST"prenom"]) && isset($_POST"email"]) && isset($_POST"ville"]) && isset($_POST"code"]) && isset($_POST"departement"]) && isset($_POST"emploi"]) && isset($_POST"loisir"]) && isset($_POST"message"])){
extract($_POST);
if(!empty($nom) && !empty($prenom) && !empty($email) && !empty($ville) && !empty($code) && !empty($departement) && !empty($emploi) && !empty($loisir) && !empty($message)){
$message=str_replace("\'","'",$message);
$destinataire="albert@orange.fr";
$sujet="Formulaire de contact";
$msg="Un nouveau message est arrivé \n
Nom: $nom \n
Prenom: $prenom \n
Email: $email \n
Ville: $ville \n
Code: $code \n
Departement: $departement \n
Emploi: $emploi \n
Loisir: $loisir \n
Message: $message";
/*Si 1 destinataire:
$entete="From: $mail";*/
/*Si plusieurs destinataires:
$entete="From: From: $email \n
Cc: toiencopie@example.com \n
Bcc: luiencache@example.com";*/
$entete="From: $email \n
Bcc: serge.soyez@ujf-grenoble.fr";
mail($destinataire, $sujet, $msg, $entete);
echo("<h2>Votre message a bien été envoyé.<br>
Nous vous répondrons dans les plus brefs délais.</h2>");
}
else{
echo("<h2>Vous n'avez pas rempli tous les champs!<br>
Votre formulaire n'a pas été transmis.<br>
Merci de bien vouloir remplir tous les champs.</h2>");
}
}
?>

5 réponses

jaa09, il y a 14 ans

je n'ai pas trop compris mais avec ce qui suit tout marche.
ps:utilise les balises code la prochaine fois :)
HTML:

<table border="2" width="50%" align="center">
<tr>
<td width="100%" bgcolor="#A6CAF0">
<form name="form" action="validation.php" method="post">
<fieldset>
<br />
<legend><h3>Vos coordonnées</h3></legend>
<table border="0">
<tr>
<td align="left">Nom</td>
<td><input type="text" size="20" name="nom" value="" /></td>
</tr>
<tr>
<td align="left">Prénom</td>
<td><input type="text" size="20" name="prenom" value="" /></td>
</tr>
<tr>
<td align="left">E-Mail</td>
<td><input type="text" size="20" name="email" value="" /></td>
</tr>
<tr>
<td align="left">Ville</td>
<td><input type="text" size="20" name="ville" value="" /></td>
</tr>
<tr>
<td align="left">Code postal</td>
<td><input type="text" size="5" name="code" value="" /></td>
</tr>
<tr>
<td align="left">Département</td>
<td>
<select name="departement" size="3">
<option value="Seine-Saint-Denis">Seine-Saint-Denis</option>
<option value="Val de Marne">Val de Marne</option>
<option value="Seine et Marne">Seine et Marne</option>
<option value="Paris">Paris</option>
<option value="Yvelines">Yvelines</option>
<option value="Essonne">Essonne</option>
<option value="Hauts de Seine">Hauts de Seine</option>
<option value="Val d'Oise">Val d'Oise</option>
</select>
</td>
</tr>
</table>
</fieldset>
<fieldset>
<br />
<legend><h3>Votre type d'emploi</h3></legend>
<table border="0">
<tr>
<td><input type="radio" name="emploi" value="enseignement" /></td>
<td>enseignement</td>
<td><input type="radio" name="emploi" value="éducation" /></td>
<td>éducation</td>
<td><input type="radio" name="emploi" value="administration" /></td>
<td>administration</td>
</tr>
</table>
</fieldset>
<fieldset>
<br />
<legend><h3>Vos loisirs préférés</h3></legend>
<input type="checkbox" name="loisir]" value="Son-vidéo" />Son-vidéo
<input type="checkbox" name="loisir]" value="Télévision" />Télévision
<input type="checkbox" name="loisir]" value="Cinéma" />Cinéma<br />
<input type="checkbox" name="loisir]" value="Programmation" />Programmation
<input type="checkbox" name="loisir]" value="Sports" />Sports
<input type="checkbox" name="loisir]" value="Internet" />Internet
<input type="checkbox" name="loisir]" value="Son-vidéo" />Son-vidéo
</fieldset>
<fieldset>
<br />
<legend><h3>Écrivez votre message</h3></legend>
<textarea name="message" rows="3" cols="40"></textarea>
</fieldset>
<hr size="3" noshade="noshade" />
<div align="center">
<input type="submit" name="enregistrer" value="Enregistrer" onClick="verifForm(this.form)" />
<input type="reset" name="annuler" value="Annuler" />
</div>
</form>
</td>
</tr>
</table>

Validation.php

<?php
if(isset($_POST) && isset($_POST"nom"]) && isset($_POST"prenom"]) && isset($_POST"email"]) && isset($_POST"ville"]) && isset($_POST"code"]) && isset($_POST"departement"]) && isset($_POST"emploi"]) && isset($_POST"loisir"]) && isset($_POST"message"])){
extract($_POST);
if(!empty($nom) && !empty($prenom) && !empty($email) && !empty($ville) && !empty($code) && !empty($departement) && !empty($emploi) && !empty($loisir) && !empty($message)){
$message=str_replace("\'","'",$message);
$destinataire="albert@orange.fr";
$sujet="Formulaire de contact";
$loisirs = '';
foreach($loisir as $c => $v){
    $loisirs .= $v.' - ';
}
$msg="Un nouveau message est arrivé \n
Nom: $nom \n
Prenom: $prenom \n
Email: $email \n
Ville: $ville \n
Code: $code \n
Departement: $departement \n
Emploi: $emploi \n
Loisir: $loisirs \n
Message: $message";
/*Si 1 destinataire:
$entete="From: $mail";*/
/*Si plusieurs destinataires:
$entete="From: From: $email \n
Cc: toiencopie@example.com \n
Bcc: luiencache@example.com";*/
$entete="From: $email \n
Bcc: serge.soyez@ujf-grenoble.fr";
mail($destinataire, $sujet, $msg, $entete);
echo("<h2>Votre message a bien été envoyé.<br>
Nous vous répondrons dans les plus brefs délais.</h2>");
}
else{
echo("<h2>Vous n'avez pas rempli tous les champs!<br>
Votre formulaire n'a pas été transmis.<br>
Merci de bien vouloir remplir tous les champs.</h2>");
}
}
?>
albert, il y a 14 ans

Merci de ta réponse, en fait je voulais que le "controle" php dise: "vous n'avez pas coché une case" ou "vous n'avez pas fait de choix dans le menu déroulant".
Comment faire?
Merci

jaa09, il y a 14 ans

comme ceci?

<?php
if(isset($_POST) && isset($_POST"nom"]) && isset($_POST"prenom"]) && isset($_POST"email"]) && isset($_POST"ville"]) && isset($_POST"code"]) && isset($_POST"message"])){
    extract($_POST);
    if(isset($_POST"departement"]) && !empty($departement)){
        if(isset($_POST"emploi"]) && !empty($emploi)){
            if(isset($_POST"loisir"]) && !empty($loisir)){
                if(!empty($nom) && !empty($prenom) && !empty($email) && !empty($ville) && !empty($code) && !empty($departement) && !empty($emploi) && !empty($loisir) && !empty($message)){
                    $message=str_replace("\'","'",$message);
                    $destinataire="albert@orange.fr";
                    $sujet="Formulaire de contact";
                    $loisirs = '';
                    foreach($loisir as $c => $v){
                        $loisirs .= $v.' - ';
                    }
                    $msg="Un nouveau message est arrivé \n
                    Nom: $nom \n
                    Prenom: $prenom \n
                    Email: $email \n
                    Ville: $ville \n
                    Code: $code \n
                    Departement: $departement \n
                    Emploi: $emploi \n
                    Loisir: $loisirs \n
                    Message: $message";
                    /*Si 1 destinataire:
                    $entete="From: $mail";*/
                    /*Si plusieurs destinataires:
                    $entete="From: From: $email \n
                    Cc: toiencopie@example.com \n
                    Bcc: luiencache@example.com";*/
                    $entete="From: $email \n
                    Bcc: serge.soyez@ujf-grenoble.fr";
                    mail($destinataire, $sujet, $msg, $entete);
                    echo("<h2>Votre message a bien été envoyé.<br>
                    Nous vous répondrons dans les plus brefs délais.</h2>");
                }
                else{
                    echo("<h2>Vous n'avez pas rempli tous les champs!<br>
                    Votre formulaire n'a pas été transmis.<br>
                    Merci de bien vouloir remplir tous les champs.</h2>");
                }
            }
            else{
                echo 'Loisir';
            }
        }
        else{
            echo 'Emploi';
        }
    }
    else{
        echo 'Département';
    }
}
else{
    echo("<h2>Vous n'avez pas rempli tous les champs!<br>
    Votre formulaire n'a pas été transmis.<br>
    Merci de bien vouloir remplir tous les champs.</h2>");
}
?>
albert, il y a 14 ans

Je viens de tout vérifier (je suis novice et très lent....)
C'EST EXACTEMENT CE QUE JE VOULAIS
Vraiment un très grand merci à toi
Merci beaucoup
Albert

jaa09, il y a 14 ans

avec plaisir :)