Forum d'entraide PHPFrance

Venez poser vos questions PHP, MySQL, HTML, CSS, Javascript, Gestion de serveurs à la communauté PHPfrance

Vers le contenu

» Masquer les résultats de la recherche

Recherche dynamique PHPfrance

  1. Effectuez une recherche, les résultats s'afficheront dynamiquement ici.

Formulaire mail php : bouton radio se décoche

Pour ceux qui débutent en PHP.

Formulaire mail php : bouton radio se décoche

Messagepar adameteve 25 Oct 2010, 15:23

Bonjour à tous, :D

J'ai créé un formulaire mail php qui fonctionne, mais qui contient qqls bugs (code php sous mon message).
Le form se compose de 7 input + groupe de 3 boutons radio.
5 input sont obligatoires.

Le problème est le suivant (simulation d'erreur d'un client) :
    - un des 3 boutons radio a été correctement coché,
    - un des input est resté vide,
    - validation du formulaire,
    - un message d'alerte indique bien qu'un input est vide (interdit l'envoi du formulaire) invitant l'utilisateur a entrer les infos
    - Mais le bouton radio se retrouve décoché !

Comment faire en sorte que le bouton radio coché reste coché après un message d'erreur ?

Je signale que les autres input restent remplis après un message d'erreur.

Merci d'avance de votre aide, ;-)
Adam

Syntaxe: [ Télécharger ] [ Masquer ]
Code php
      <?php
if (isset($_POST["envoyer"])){ // Si le formulaire a été soumis
    $etat = "erreur"; // On initialise notre etat à erreur, il sera changé à "ok" si la vérification du formulaire est un succès, sinon il reste à erreur
 
    // On récupère les champs du formulaire, et on arrange leur mise en forme
    if (isset($_POST["son_nom"])) $_POST["son_nom"]=trim(stripslashes
($_POST["son_nom"])); // trim()  enlève les espaces en début et fin de chaine
 
    if (isset($_POST["son_email"])) $_POST["son_email"]=trim(stripslashes
($_POST["son_email"])); // stripslashes()  retire les backslashes ==> \' devient '
 
    if (isset($_POST["son_adresse"])) $_POST["son_adresse"]=trim(stripslashes(
$_POST["son_adresse"]));
 
    if (isset($_POST["son_objet"])) $_POST["son_objet"]=trim(stripslashes
($_POST["son_objet"]));
 
    if (isset($_POST["son_message"])) $_POST["son_message"]=trim(stripslashes
($_POST["son_message"]));
 
    // Après la mise en forme, on vérifie la validité des champs
    if (empty($_POST["son_nom"])) { // L'utilisateur n'a pas rempli le champ nom
        $erreur="Vous n'avez pas entr&eacute; votre nom..."; // On met dans erreur le message qui sera affiché
                }
        elseif (empty($_POST["son_email"])) { // L'utilisateur n'a pas rempli le champ email
            $erreur="Nous avons besoin de votre e-mail pour vous r&eacute;pondre...";
                }
        elseif (!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$",$_POST["son_email"])){
                // On vérifie si l'email est bien de la forme messagerie@domaine.tld (cf cours d'expressions régulières)
            $erreur="Votre adresse e-mail n'est pas valide...";
        }
                 if (empty($_POST["choix"])) { // L'utilisateur n'a pas rempli le champ choix
        $erreur="Merci de sélectionner une prestation..."; // On met dans erreur le message qui sera affiché
                }
        elseif (empty($_POST["son_objet"])) { // L'utilisateur n'a pas rempli le champ objet
            $erreur="Vous devez entrer l'objet de votre message...";
        }
        elseif (empty($_POST["son_message"])) { // L'utilsateur n'a écrit aucun message
            $erreur="Merci de saisir un message...";
        }
        else { // Si tous les champs sont valides, on change l'état à ok
            $etat="ok";
        }
}
else { // Sinon le formulaire n'a pas été soumis
    $etat="attente"; // On passe donc dans l'état attente
}
 
if ($etat!="ok"){ // Le formulaire a été soumis mais il y a des erreurs etat=erreur) OU le formulaire n'a pas été soumis (etat=attente)
    if ($etat=="erreur"){ // Cas où le formulaire a été soumis mais il y a des erreurs
        echo "<span style=\"color:red\">".$erreur."</span><br /><br />\n";
// On affiche le message correspondant à l'erreur
    }
?>
     
      <!-- Formulaire HTML qu'on affiche dans l'état attente ou erreur -->
     
      <form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
        <!-- Les données du formulaire seront récupérée avec la méthode POST,
 et action correspond à la page contenant le formulaire -->
        <table id=tab-form-contact>
          <tr>
            <th class=ch-oblig colspan="3">* Champs obligatoires</th>
          </tr>
          <tr>
            <th><label for="son_nom">Nom *</label></th>
            <td >&nbsp;</td>
            <td><!-- Intitulé du champ nom -->
             
              <input type="text" size="30" name="son_nom" id="son_nom" value="<?php
        if (!empty($_POST["son_nom"])) {
        // le nom de l'expéditeur a été saisi --> le réafficher
        echo htmlspecialchars($_POST["son_nom"],ENT_QUOTES);
// htmlspecialchars() convertit les caractères spéciaux en leurs code html,exemple : & devient &amp;
        }
        ?>" /></td>
          </tr>
          <tr>
            <th><label for="son_nom">Prénom&nbsp;&nbsp;</label></th>
            <td>&nbsp;</td>
            <td><!-- Intitulé du champ nom -->
             
              <input type="text" size="30" name="son_prenom" id="son_prenom" value="<?php
        if (!empty($_POST["son_prenom"])) {
        // le nom de l'expéditeur a été saisi --> le réafficher
        echo htmlspecialchars($_POST["son_prenom"],ENT_QUOTES);
// htmlspecialchars() convertit les caractères spéciaux en leurs code html,exemple : & devient &amp;
        }
        ?>" /></td>
          </tr>
          <tr>
            <th><label for="son_nom">Courriel *</label></th>
            <td>&nbsp;</td>
            <td><!-- Intitulé du champ e-mail -->
             
              <input type="text" size="40" name="son_email" id="son_email" value="<?php
        if (!empty($_POST["son_email"])) {
        // l'e-mail de l'expéditeur a été saisi --> le réafficher
        echo htmlspecialchars($_POST["son_email"],ENT_QUOTES);
        }
        ?>" /></td>
          </tr>
          <tr>
            <th><label for="son_nom">Téléphone&nbsp;&nbsp;</label></th>
            <td>&nbsp;</td>
            <td><input name="son_tel" type="text" id="son_tel" value="<?php
        if (!empty($_POST["son_tel"])) {
        // le telephone de l'expéditeur a été saisi --> le réafficher
        echo htmlspecialchars($_POST["son_tel"],ENT_QUOTES);
// htmlspecialchars() convertit les caractères spéciaux en leurs code html,exemple : & devient &amp;
        }
        ?>" size="30" maxlength="10" />
              &nbsp;Sans point et sans espace</td>
          </tr>
          <tr>
            <th><label for="son_adresse">Adresse&nbsp;</label></th>
            <td>&nbsp;</td>
            <td><!-- Intitulé du champ adresse (facultatif) -->
             
              <input type="text" size="40" name="son_adresse" id="son_adresse" value="<?php
        if (!empty($_POST["son_adresse"])) {
        // l'adresse a été saisi --> la réafficher
        echo htmlspecialchars($_POST["son_adresse"],ENT_QUOTES);
        }
        ?>" /></td>
          </tr>
          <tr>
            <th><label for="son_nom">Prestations *</label></th>
            <td>&nbsp;</td>
            <td><table width="310">
                <tr>
                  <td><label>
                      <input type="radio" name="choix" value="pao" id="choix_0">
                      PAO</label></td>
                </tr>
                <tr>
                  <td><label>
                      <input type="radio" name="choix" value="photo" id="choix_1">
                      Photo</label></td>
                </tr>
                <tr>
                  <td><label>
                      <input type="radio" name="choix" value="paophoto" id="choix_2">
                      PAO + Photo</label>
                      </td>
                      <td>Sélectionnez une prestation</td>
                </tr>
              </table>
             
              </td>
          </tr>
          <tr>
            <th><label for="son_objet">Objet *</label>
            </th>
            <td>&nbsp;</td>
            <td><!-- Intitulé du champ objet -->
             
              <input type="text" size="40" name="son_objet" id="son_objet" value="<?php
        if (!empty($_POST["son_objet"])) {
        // l'objet du message a été saisi --> le réafficher
        echo htmlspecialchars($_POST["son_objet"],ENT_QUOTES);
        }
        ?>" /></td>
          </tr>
          <tr>
            <th><label for="son_message">Message *</label></th>
            <td>&nbsp;</td>
            <td><!-- Intitulé du champ message -->
             
              <textarea name="son_message" id="son_message" cols="50" rows="3"><?php
        if (isset($_POST["son_message"])) {
        // le message a été saisi --> le réafficher
        echo htmlspecialchars($_POST["son_message"],ENT_QUOTES);
        }
        ?>
</textarea></td>
          </tr>
          <tr>
            <td class=td-foot colspan="3"><input type="submit" name="envoyer" value="Envoyer" />
              &nbsp;&nbsp;
              <input type="reset"
name="reset" value="Effacer" /></td>
          </tr>
        </table>
        <p style="text-align:left"> <br />
      </form>
      <!-- FIN du formulaire HTML -->
     
      <?php
}
else { // Sinon l'état est ok donc on envoie le mail
    $son_nom = $_POST["son_nom"]; // On stocke les variables récupérées du formulaire
    $son_email = $_POST["son_email"];
    $son_adresse = $_POST["son_adresse"];
    $son_objet = $_POST["son_objet"];
    $son_message = $_POST["son_message"];
 
    $mon_email = "contact@paophoto89.fr"; // Mise en forme du message que vous recevrez
    $mon_nom = "PaoPhoto89";
    $mon_url = "http://www.paophoto89.com";
    $msg_pour_moi = "
        - Son nom : $son_nom \n
        - Son prenom : $son_prenom \n
    - Son courriel : $son_email \n
        - Son telephone : $son_tel \n
        - Son adresse : $son_adresse \n
    - Sa prestation : $choix \n
    - Objet du message : $son_objet \n
    - Message : \n $son_message \n\n"
;
 
    // Mise en forme de l'accusé réception qu'il recevra
    $accuse_pour_lui = "Bonjour $son_nom,\n
    Votre message nous a bien été envoyé et nous tâcherons de vous répondre le plus
 rapidement possible.\n\n
    - Votre E-mail : $son_email \n
    - Votre prestation : $choix \n
    - L'objet de votre message : $son_objet \n
    - Votre message : \n $son_message \n\n
    Merci et à bientôt sur http://www.paophoto89.com !"
;
 
    // Envoie du mail
    $entete = "From: " . $mon_nom . " <" . $mon_email . ">\n"; // On prépare l'entête du message
    $entete .= "MIME-Version: 1.0";
 
    if (@mail($mon_email,$son_objet,$msg_pour_moi,$entete) &&
@mail($son_email,$son_objet,$accuse_pour_lui,$entete)){ // Si le mail a été envoyé
        echo "<p style=\"text-align:center\">Votre message a &eacute;t&eacute;
envoy&eacute;, vous recevrez une confirmation par mail.<br /><br />\n"
;
// On affiche un message de confirmation
        echo "<a href=\"" . $mon_url . "\">Retour</a></p>\n";
// Avec un lien de retour vers l'accueil du site
    }
    else { // Sinon il y a eu une erreur lors de l'envoi
        echo "<p style=\"text-align:center\">Un problème s'est produit lors de
l'envoi du message.\n"
;
        echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Réessayez...</a></p>\n";
// On propose un lien de retour vers le formulaire
    }
}
?>
EasyPhp v1.8.0.1 - Dreamweaver MX 2004 - Manuel : "PHP/MySQL avec Dreamweaver MX 2004" de Jean-Marie Defrance (Ed. EYROLLES)
adameteve
Embryon
 
Messages: 13
Inscription: 17 Avr 2005, 11:17

Re: Formulaire mail php : bouton radio se décoche

Messagepar Megadeth 25 Oct 2010, 15:53

Salut,

Récupère la valeur postée et si la valeur postée correspond à la valeur de ton bouton, fais un echo 'checked'

Mega
;)
Dyslexics are teople poo
Megadeth
Eléphant
 
Messages: 514
Inscription: 03 Jan 2006, 15:56

Re: Formulaire mail php : bouton radio se décoche

Messagepar adameteve 25 Oct 2010, 16:01

Merci pour ton aide. :wink:
Malheureusement je n'y connais rien en code, je découvre et je fonctionne par copier/coller.

Je n'ai donc pas saisi ta réponse :oops:
Si tu pouvais m'écrire un modèle de code que j'adapterai à ma page... :mrgreen:

Merci d'avance :pouce:
EasyPhp v1.8.0.1 - Dreamweaver MX 2004 - Manuel : "PHP/MySQL avec Dreamweaver MX 2004" de Jean-Marie Defrance (Ed. EYROLLES)
adameteve
Embryon
 
Messages: 13
Inscription: 17 Avr 2005, 11:17

Re: Formulaire mail php : bouton radio se décoche

Messagepar adameteve 25 Oct 2010, 16:20

Ok, j'ai trouvé.
Il suffit d'ajouter ce code pour chaque bouton :

Syntaxe: [ Télécharger ] [ Masquer ]
Code php
<input type="radio" name="choix" value="pao" id="choix_0" <?php if ( $_POST['choix'] == 'pao' ) echo 'checked'; ?> />
...
 
EasyPhp v1.8.0.1 - Dreamweaver MX 2004 - Manuel : "PHP/MySQL avec Dreamweaver MX 2004" de Jean-Marie Defrance (Ed. EYROLLES)
adameteve
Embryon
 
Messages: 13
Inscription: 17 Avr 2005, 11:17


Retourner vers PHP débutant

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 10 invités