PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 Forum Général PHP » Formulaire mail php : bouton radio se décoche » 28-10-2010 10:09:29

adameteve
Réponses : 2

Bonjour à tous, smile

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, wink
Adam


      <?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é 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é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 > </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 &
        }
        ?>" /></td>
          </tr>
          <tr>
            <th><label for="son_nom">Prénom  </label></th>
            <td> </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 &
        }
        ?>" /></td>
          </tr>
          <tr>
            <th><label for="son_nom">Courriel *</label></th>
            <td> </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  </label></th>
            <td> </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 &
        }
        ?>" size="30" maxlength="10" />
               Sans point et sans espace</td>
          </tr>
          <tr>
            <th><label for="son_adresse">Adresse </label></th>
            <td> </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> </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> </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> </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" />
                
              <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 = "[url]http://www.paophoto89.com[/url]";
    $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 [url]http://www.paophoto89.com[/url] !"
;
 
    // 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 été
envoyé, 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
    }
}
?>

Pied de page des forums

Propulsé par FluxBB