Formulaire mal rempli = message d'erreur

aventvoy
WRInaute discret
WRInaute discret
 
Messages: 169
Inscription: 17 Nov 2004

Formulaire mal rempli = message d'erreur

Message le Lun Mar 24, 2008 3:37

Hello,
J'ai différents formulaires simples (contact, newsletter, inscription...) sur différents sites.
Si le formulaire est correctement rempli, sans oublier aucun champ obligatoire, tout va bien, je reçois le formulaire par courriel, no problem.
Par contre, si un champ n'est pas (ou mal) rempli, la page s'ouvre sur un message d'erreur et l'affichage du formulaire partiellement rempli avec mention genre "vous n'avez pas rempli ça..." . Et le bouton "Envoyer" classique.
Le problème c'est que lorsqu'on corrige l'erreur, on peut cliquer 20 fois sur "Envoyer", rien ne se passe, le formulaire est bloqué... Le bouton "Recommencer" ne marche pas non plus...
Une idée du pourquoi de la chose?
Voici un bref apperçu du code (simplifié à une entrée et sans html pour faire simple...)

Code: Tout sélectionner
<?php
if(isset($_POST['envoi']))
{
    $email_dest = "machin@machin.com";
    $headers ="MIME-Version: 1.0 \n";
    $headers .="From: Site internet <webmaster@machin.com>\n";
    $headers .="Content-Type: text/html; charset=iso-8859-1 \n";
    $subject = "Formulaire de contact depuis le site machin.com";

    // Récupération des données du formulaire
    $prenom     = $_POST['prenom'];

   //Définition des variables servant au traitement des info
    // Conditions de mauvaises réponses (champ vide par exemple)

    if ($prenom == '' )
    {
        // Action à adopter
?>
           
Un (ou plusieurs) champ(s) n'a(ont) pas été correctement rempli(s).

  <?php
        if ($prenom == '')
        {
            print "<li>Vous n'avez pas précisé votre prénom </li>\n";
        }

        /* Si les vérifications ont généré des erreurs, affichage du formulaire
        contenant les données déjà saisies par l'utilisateur.
        Si aucune erreur n'est relevée, alors le script continue et le message part */
?>
<form action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
   <input type="text" name="prenom" maxlength="40" class="cases" value="<?php echo $prenom ?>" />

<input type="submit" class="verif" name="envoi" value="Envoyer" />
<input name="recommencer" type="reset" class="verif" id="recommencer" value="Recommencer" />

<?php
    }
    else
    {
        /*   Si aucun des champs obligatoire n'est vide et si les données sont valides : Traitement des données et affichage des infos reçues*/

        print "<p>Merci ! Voici la demande d'information reçue : </p>\n";
       
//etc...

        /*envoi de ces mêmes informations par courrier électronique : */
        $message  = "<p> le message ici...\r\n";

        /* On envoie le message */
        if(mail($email_dest, $subject, $message, $headers))
          {
            echo("<p>blablabla, etc....</p>");
        }
        else
        {
            echo("<p>Un incident technique s'est produit, Nous n'avons pas reçu votre message. Contactez nous directement à <a href=mailto:contact@machin.com</a></p>\n");
        }
    }
}
/* Si cette page s'ouvre pour la première fois sans que le bouton soumettant le formulaire n'ait été cliqué, alors on affiche le formulaire normalement */

else
{
?>
<form action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
 
Votre prénom
      <input type="text" name="prenom" maxlength="40" class="cases" value="" /></td>
     
<input type="submit" class="verif" name="envoi" value="Envoyer" /> <input name="recommencer" type="reset" class="verif" id="recommencer" value="Recommencer" />
       
</form>
<?php
}
?>


Voilà... Pourquoi ça ne marche pas lorsque le formulaire se voit à nouveau partiellement rempli (après erreur donc)?

Merci d'avance!
A.


manthoR
WRInaute discret
WRInaute discret
 
Messages: 231
Inscription: 13 Mar 2006

Message le Lun Mar 24, 2008 3:48

outre que c'est pas la plus simple manière de coder ton script, il me semble qu'il te manque tout bêtement un </form>


Code: Tout sélectionner

       /* Si les vérifications ont généré des erreurs, affichage du formulaire
        contenant les données déjà saisies par l'utilisateur.
        Si aucune erreur n'est relevée, alors le script continue et le message part */
?>
<form action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
   <input type="text" name="prenom" maxlength="40" class="cases" value="<?php echo $prenom ?>" />

<input type="submit" class="verif" name="envoi" value="Envoyer" />
<input name="recommencer" type="reset" class="verif" id="recommencer" value="Recommencer" />


</FORM>


<?php
    }
    else
    {

aventvoy
WRInaute discret
WRInaute discret
 
Messages: 169
Inscription: 17 Nov 2004

Résolu

Message le Lun Mar 24, 2008 4:58

Pfff... C'était aussi simple que ça... MERCI!
Bon, pour le
outre que c'est pas la plus simple manière de coder ton script
, merci également. Je me doutais bien qu'il y avait certainement plus simple... C'est en forgeant qu'on devient forgeron, c'est en codant qu'on code rond :roll:
Petit à petit j'ai bon espoir d'y arriver !
Merci encore.
A.

dax84
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 4
Inscription: 1 Mar 2012

Re: Formulaire mal rempli = message d'erreur

Message le Jeu Mar 01, 2012 16:59

Je profite de ce post, j'ai le même type de problème sur un formulaire. S'il y a une erreur, mon bouton submit reste bloqué.
Quelqu'un aurait une idée svp?
Merci !


<code><form method="post" action="contact.php" name="contactform" id="contactform" autocomplete="on">
<p><label for=name accesskey=U><span class="required fsample_01">*</span> Votre nom</label>
<input name="name" type="text" id="name" size="50" value="" /></p>

<p><label for=email accesskey=E><span class="required fsample_01">*</span> Email</label>
<input name="email" type="text" id="email" size="50" value="" /></p>

<p><label for=phone accesskey=P><span class="required fsample_01">*</span> Téléphone</label>
<input name="phone" type="text" id="phone" size="50" value="" /></p>

<p><label for=subject accesskey=S>Sujet</label>
<select name="subject" id="subject">
<option value="Support">Informations</option>
<option value="a Sale">Devis</option>
<option value="a Bug fix">Reporter un bug</option>
</select></p>

<p><label for=comments accesskey=C><span class="required">*</span> Votre message</label>
<textarea name="comments" rows="8" cols="40" id="comments" style="width: 450px;"></textarea></p>

<p><span class="required">*</span> Code de vérification</p>

<div>
<label style="display:block; float:left; margin-right:15px;" for=verify accesskey=V>&nbsp;&nbsp;&nbsp;<img src="image.php" border="0" alt="code" /></label>
<input name="verify" type="text" id="verify" size="6" value="" style="width: 50px; float:left;" />
<div class="clear"></div>
</div><br />
<input type="submit" class="submit" id="submit" value="Submit" />

</form></code>

franckM
WRInaute impliqué
WRInaute impliqué
 
Messages: 832
Inscription: 15 Nov 2007

Re: Formulaire mal rempli = message d'erreur

Message le Jeu Mar 01, 2012 17:42

Il reste bloqué, c'est à dire ?

Peut être parce qu'il n'y a aucun traitement php de celui-ci ?


zeb
WRInaute accro
WRInaute accro
 
Messages: 4557
Inscription: 5 Déc 2004

Re: Formulaire mal rempli = message d'erreur

Message le Jeu Mar 01, 2012 18:16

dax84 a écrit:Quelqu'un aurait une idée svp ?

Tant que tu encadre ton formulaire avec des balises <code> ça ne risque pas de fonctionner.

franckM
WRInaute impliqué
WRInaute impliqué
 
Messages: 832
Inscription: 15 Nov 2007

Re: Formulaire mal rempli = message d'erreur

Message le Jeu Mar 01, 2012 18:41

zeb a écrit:
dax84 a écrit:Quelqu'un aurait une idée svp ?

Tant que tu encadre ton formulaire avec des balises <code> ça ne risque pas de fonctionner.


Non mais je crois qu'il pensait à mettre en style pour le forum: [code][/code] :?:


zeb
WRInaute accro
WRInaute accro
 
Messages: 4557
Inscription: 5 Déc 2004

Re: Formulaire mal rempli = message d'erreur

Message le Jeu Mar 01, 2012 18:42

franckM a écrit:Non mais je crois qu'il pensait à mettre en style pour le forum: [code][/code] :?:

Je me suis dit ça aussi mais en fait j'en suis pas sur.

dax84
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 4
Inscription: 1 Mar 2012

Re: Formulaire mal rempli = message d'erreur

Message le Ven Mar 02, 2012 8:29

oui bien sur je voulais indiquer le code… :) donc on enlève les balises <code> </code>.
S'il y a une erreur dans le formulaire, par exemple le code de vérification est mal entré, le bouton submit reste appuyé, donc impossible de re soumettre le formulaire.
Merci.


MikeR
WRInaute impliqué
WRInaute impliqué
 
Messages: 586
Inscription: 9 Jan 2010

Re: Formulaire mal rempli = message d'erreur

Message le Ven Mar 02, 2012 12:11

tu utilises du JQuery, non?
class="required" force la validation du champ, il me semble ....

franckM
WRInaute impliqué
WRInaute impliqué
 
Messages: 832
Inscription: 15 Nov 2007

Re: Formulaire mal rempli = message d'erreur

Message le Ven Mar 02, 2012 13:44

MikeR a écrit:tu utilises du JQuery, non?
class="required" force la validation du champ, il me semble ....


Je vois souvent cette classe sur prestashop et il me semble qu'elle sert uniquement pour l'astérisque placement/couleur.
Mais bon peut être là il utilise jquery...

dax84
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 4
Inscription: 1 Mar 2012

Re: Formulaire mal rempli = message d'erreur

Message le Lun Mar 05, 2012 10:23

merci pour vos réponses ! mais non ça ne viens pas de la class.
Le problème viens du fait que mon formulaire en html renvoie les informations collectées vers un formulaire en php.
Quand il y a un message d'erreur, le bouton submit n'est pas réinitialisé. Du coup pas moyen de renvoyer les données corrigées.

franckM
WRInaute impliqué
WRInaute impliqué
 
Messages: 832
Inscription: 15 Nov 2007

Re: Formulaire mal rempli = message d'erreur

Message le Lun Mar 05, 2012 10:44

Tu devrais traiter les données (PHP) dans le même fichier que ton formulaire.
Tu commences ta page du type:
Code: Tout sélectionner
<?php
if(isset($_POST('submit')) //il faut que tu rajoutes l'attribut name="submit" à ton input submit
{ traitement...}
?>
Et ensuite ta page html avec ton formulaire


Du coup pas moyen de renvoyer les données corrigées

Si, tu peux renvoyer les données vers ton formulaire en faisant un header('location:formulaire.html...) et en mettant les données collectées dans l'URL et en les récupérant avec GET.
Mais bon, comme dit plus haut, ce serait beaucoup plus simple de traiter tout dans le même fichier.

dax84
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 4
Inscription: 1 Mar 2012

Re: Formulaire mal rempli = message d'erreur

Message le Lun Mar 05, 2012 10:49

muarf, ce qui faisais bugger le formulaire c'était la balise ID sur le bouton submit. Je restais focalisé sur le php alors que c'était juste sur les balises :oops:


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité