silv1 Posté 29 Avril 2008 Posté 29 Avril 2008 Bonjour!!! C'est encore moi, et c'est encore un problème de formulaire... Alors voilà en fait lorsqu'un internaute remplit correctement tous les champs du formulaire tout marche nickel... Mais lorsqu'il omet d'indiquer une info les choses se compliquent: une page apparait avec un message indiquant que tel champ obligatoire n'a pas été saisi. Lorsque l'internaute revient en arrière avec le navigateur, il retrouve le formulaire avec les données qu'il venait de saisir. Mais une fois les infos modifiées, lorsqu'il clique sur le bouton "envoyer", plus rien ne se passe... La page reste fixe et le fichier php qui est censé gérer les données du formulaire ne se lance même pas. J'ai observé ce problème sous Firefox, par contre sur internet explorer ça fonctionne correctement Bizarre, bizarre je n'arrive pas du tout à voir d'où vient ce bug... Quelqu'un a t-il déjà été confronté à un problème similaire? Merci pour vos éclaircissements
marcb Posté 29 Avril 2008 Posté 29 Avril 2008 Bonsoir, Merci de donner la page sur laquelle ça se produit. M
Kioob Posté 29 Avril 2008 Posté 29 Avril 2008 Hello, la seule fois que j'ai vu ce genre de bug c'était parce que le formulaire était (mal) géré en JS. Mais sans le code en question comme le suggère marcb on ne pourra guère t'aider plus.
silv1 Posté 2 Mai 2008 Auteur Posté 2 Mai 2008 (modifié) Bonjour! Merci kioob et marcb pour vos réponses... Alors en fait je viens de changer complètement mon formulaire de contact. J'ai trouvé un script php qui fonctionne à merveille et je n'ai donc plus de problème de formulaire bloqué Par contre j'aimerai bien retrouver une fonctionnalité que j'avais sur mon ancien formulaire, à savoir le stockage des infos recueillies sur un fichier txt. Sur mon autre formulaire j'utilisais ces lignes de code $datedujour = date('d/m/y/H:i:s');$filename="./admin/monfichier.txt";$fl=fopen($filename,"a+");fwrite($fl,"''$f_2'|'$f_3'|'$f_4'|'$f_5'|'$f_6'|'$f_2'|\n\r");fclose($fl); Mais vu que le nouveau formulaire est entièrement en php, je me demande ou placer ce code... J'ai essayé pleins de fois mais à chaque fois ça bug. Je vous indique donc le code du nouveau formulaire: avant la balise <html> CODE <?php$color_font_warn="#FF0000"; $color_form_warn="#FFCC66"; $list['f_1']=array("M","Mlle","Mme"); $list['f_7']=array("choix1","choix2","choix3"); if(isset($_POST['submit'])){ $erreur=""; while(list($var,$val)=each($_POST)){ if(!is_array($val)){ $$var=strip_tags($val); }else{ while(list($arvar,$arval)=each($val)){ $$var[$arvar]=strip_tags($arval); } } } $f_2=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_2))); $f_3=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_3))); $f_4=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_4))); $f_5=strip_tags(trim($f_5)); $f_6=trim(eregi_replace("[^0-9\ +]", "", $f_6)); if(!$f_1){ $erreur.="<li><span class='txterror'>Le champ « Civilité » requiert au moins une sélection.</span>"; $errf_1=1; } if(strlen($f_2)<2){ $erreur.="<li><span class='txterror'>Le champ « Nom » est vide ou incomplet.</span>"; $errf_2=1; } if(strlen($f_3)<2){ $erreur.="<li><span class='txterror'>Le champ « Prénom » est vide ou incomplet.</span>"; $errf_3=1; } if(strlen($f_4)<2){ $erreur.="<li><span class='txterror'>Le champ « Département » est vide ou incomplet.</span>"; $errf_4=1; } if(strlen($f_5)<2){ $erreur.="<li><span class='txterror'>Le champ « Adresse e-mail » est vide ou incomplet.</span>"; $errf_5=1; }else{ if(!ereg('^[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+'. '@'. '[-!#$%&\'*+\/0-9=?A-Z^_`a-z{|}~]+\.'. '[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+$', $f_5)){ $erreur.="<li><span class='txterror'>La syntaxe de votre adresse e-mail n'est pas correcte.</span>"; $errf_5=1; } } if(strlen($f_6)<2){ $erreur.="<li><span class='txterror'>Le champ « Téléphonne » est vide ou incomplet.</span>"; $errf_6=1; } if($erreur==""){ // Création du message $titre="Message de votre site"; $tete="From:Site\n"; for($id=0; $id<count($list['f_1']); $id++){ if($f_1[$id]==1){ $corps.="Civilité : ".$list['f_1'][$id]."\n"; } } $corps.="Nom : ".$f_2."\n"; $corps.="Prénom : ".$f_3."\n"; $corps.="Département : ".$f_4."\n"; $corps.="Adresse e-mail : ".$f_5."\n"; $corps.="Téléphonne : ".$f_6."\n"; for($id=0; $id<count($list['f_7']); $id++){ if($f_7[$id]==1){ $corps.="Vous souhaitez: : ".$list['f_7'][$id]."\n"; } } $corps.="Remarques ou questions éventuelles : ".$f_8."\n"; if(mail("monmail", $titre, stripslashes($corps), $tete)){ $ok_mail="true"; }else{ $erreur.="<li><span class='txterror'>Une erreur est survenue lors de l'envoi du message, veuillez refaire une tentative.</span>"; } } } ?> Entre les balises <body> et </body> CODE <? if($ok_mail=="true"){ ?> <table width='100%' border='0' cellspacing='1' cellpadding='1'> <tr><td><span class='txtform'>Le message ci-dessous nous a bien été transmis, et nous vous en remercions.</span></td></tr> <tr><td> </td></tr> <tr><td><tt><?echo nl2br(stripslashes($corps));?></tt></td></tr> <tr><td> </td></tr> <tr><td><span class='txtform'>Nous allons y donner suite dans les meilleurs délais.<br>A bientôt.</span></td></tr> </table> <? }else{ ?> <form action='<? echo $PHP_SELF ?>' method='post' name='Form'> <table width='100%' border='0' cellspacing='1' cellpadding='1'> <? if($erreur){ ?><tr><td colspan='2' bgcolor='red'><span class='txterror'><font color='white'><b> ERREUR, votre message n'a pas été transmis</b></font></span></td></tr><tr><td colspan='2'><ul><?echo$erreur?></ul></td></tr><?}?> <tr><td colspan='2'><span class='txterror'>Les champs marqué d'un * sont obligatoires</span></td></tr> <tr><td align='right' width='30%'><span class='txtform'>Civilité* :</span></td><td> <table border='0' cellspacing='0' cellpadding='0'> <? for($id=0;$id<count($list['f_1']);$id++){ if($f_1[$id]==1){$ct="checked";} print("<tr><td><input ".$ct." type='checkbox' name='f_1[$id]' value='1' border='0'></td><td><span class='txtform'>".$list[f_1][$id]."</span></td></tr>"); unset($ct); }?> </table> </td></tr> <tr><td align='right' width='30%'><span class='txtform'>Nom* :</span></td><td><input type='text' style='width:200 <?if($errf_2==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_2' value='<?echo stripslashes($f_2);?>' size='24' border='0'></td></tr> <tr><td align='right' width='30%'><span class='txtform'>Prénom* :</span></td><td><input type='text' style='width:200 <?if($errf_3==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_3' value='<?echo stripslashes($f_3);?>' size='24' border='0'></td></tr> <tr><td align='right' width='30%'><span class='txtform'>Département* :</span></td><td><input type='text' style='width:200 <?if($errf_4==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_4' value='<?echo stripslashes($f_4);?>' size='24' border='0'></td></tr> <tr><td align='right' width='30%'><span class='txtform'>Adresse e-mail* :</span></td><td><input type='text' style='width:200 <?if($errf_5==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_5' value='<?echo stripslashes($f_5);?>' size='24' border='0'></td></tr> <tr><td align='right' width='30%'><span class='txtform'>Téléphonne* :</span></td><td><input type='text' style='width:200 <?if($errf_6==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_6' value='<?echo stripslashes($f_6);?>' size='24' border='0'></td></tr> <tr><td align='right' width='30%'><span class='txtform'>Vous souhaitez: :</span></td><td> <table border='0' cellspacing='0' cellpadding='0'> <? for($id=0;$id<count($list['f_7']);$id++){ if($f_7[$id]==1){$ct="checked";} print("<tr><td><input ".$ct." type='checkbox' name='f_7[$id]' value='1' border='0'></td><td><span class='txtform'>".$list[f_7][$id]."</span></td></tr>"); unset($ct); }?> </table> </td></tr> <tr><td align='right' width='30%'><span class='txtform'>Remarques ou questions éventuelles :</span></td><td><textarea style='width:360 <?if($errf_8==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_8' rows='6' cols='40'><?echo$f_8?></textarea></td></tr> <tr><td align='right' width='30%'></td><td><input type='submit' name='submit' value='Envoyer' border='0'></td></tr> </table> </form> <? } ?> Voilà donc le nouveau formulaire! Ma question est donc la suivante: selon vous ou dois-je placer les lignes de code permettant d'écrire les infos sur le fichier txt ? Merci d'avance Silv1 Modifié 2 Mai 2008 par silv1
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant