[PHP] formulaire, mise à zéro

Fermé
edi - 18 nov. 2007 à 23:44
s.spark Messages postés 2480 Date d'inscription vendredi 29 octobre 2004 Statut Contributeur Dernière intervention 13 février 2018 - 19 nov. 2007 à 14:28
Bonjour,
Je refais appel à votre générosité pour soumettre un autre pb rencontré.

mon code :
<?php

if (isset($_POST['valid'])) {

if (empty($_POST['semail']) || empty($_POST['nom']) || empty($_POST['sujet']) || empty($_POST['votre_message'])) {
$msg_form = "Tous les champs doivent être remplis";
}
else {
if( eregi("^[_\.0-9a-z-]+@([0-9a-z-]+\.)+[a-z]{2,4}$",$email) ){ // L'adresse email est valide
Mail("$notremail","$sujet","$m2","from: $notremail");
Mail($semail, $sujet, $txt, $headers);
$msg_form = "Merci ! <br /> Nous serons heureux de vous répondre dans les plus brefs délais.";
} else { // L'adresse email n'est pas valide
$msg_form = "Votre adresse email n'est pas valide";
}
}
}
?>

Ds le body
<form method="post" action="">
<label for="nom">Votre prénom et nom :</label><br />
<input name="nom" type="text" value="<?php echo (htmlentities($nom)) ?>"/>"/><br />
<label for="semail">Votre adresse email :</label><br />
<input name="semail" type="text" value="<?php echo (htmlentities($semail)) ?>"/><br />
<label for="sujet">Sujet :</label><br />
<input name="sujet" type="text" value="<?php echo (htmlentities($sujet)) ?>"/><br />
<label for="votre_message">Votre message :</label><br />
<textarea name="votre_message" id="votre_message" rows="6" cols="30" value="<?php echo (htmlentities($votre_message)) ?>"/>


Mais quand tous mes champs sont bien remplis et que mon formulaire a bien été transmis, les infos restent dans le champ sauf celle du text area... Comment faire pour que le formulaire soit "rafraichi" ou autrement dit pour que les valeurs reviennent à zéro? Merci encore de votre aide.

ed
A voir également:

5 réponses

s.spark Messages postés 2480 Date d'inscription vendredi 29 octobre 2004 Statut Contributeur Dernière intervention 13 février 2018 618
19 nov. 2007 à 06:19
Salut,

Moi je n'ai pas se problème car après la validation du formulaire je ne réaffiche pas celui-ci :-)

"sauf celle du text area."
Ca c'est bizarre

Ce qui est encore plus bizarre c'est qu'il est impossible que ton formulaire envoie quoi que se soit ni même qu'il t'affiche ce qui a été transmis dans les champs de saisie après validation, puisque à aucun moment tu n'utilises les variables POST, tu n'as pas tout donné !!


Mais sinon il suffit de faire

<?php
if (isset($_POST['valid']))
{
	if (empty($_POST['semail']) || empty($_POST['nom']) || empty($_POST['sujet']) || empty($_POST['votre_message']))
	{
		$msg_form = "Tous les champs doivent être remplis";
	}
	else 
	{
			//On récupère les variables POST
			$nom=$_POST['nom'];
			$semail=$_POST['semail'];
			$sujet=$_POST['sujet'];
			$votre_message=$_POST['votre_message'];
			
		if( eregi("^[_\.0-9a-z-]+@([0-9a-z-]+\.)+[a-z]{2,4}$",$email) )
		{ // L'adresse email est valide
			Mail("$notremail","$sujet","$m2","from: $notremail");
			Mail($semail, $sujet, $txt, $headers);
			$msg_form = "Merci ! <br /> Nous serons heureux de vous répondre dans les plus brefs délais.";
			
			//On vide les variables
			$nom="";
			$semail="";
			$sujet="";
			$votre_message="";
		} else 
		{ // L'adresse email n'est pas valide
			$msg_form = "Votre adresse email n'est pas valide";
		}
	}
}
?> 
0
Effectivement, pardon mais j'ai oublié de dire qu'avant toutes ces lignes, je mets les variables et le html de réponse.
Merci pour ce coup de pouce... Je vais essayer. Il me manquait la phase " on vide les variables".

cela va surement me débloquer les choses.
Pour le text area, effectivement, cela est très bizarre. Si je trouve pkoi, je le posterai.

Si je réaffiche le formulaire, c'est surement parce que je suis novice et que je souhaiterais ne réafficher le formulaire que s'il y a des erreurs. Si tout est ok, alors passer à une autre page. Sauf que, dans mon cas, le header est impossible (sujet discussion sur php-erruer validation email). Aussi, il m'a fallu trouver une astuce.

Merci encore.
ed
0
s.spark Messages postés 2480 Date d'inscription vendredi 29 octobre 2004 Statut Contributeur Dernière intervention 13 février 2018 618
19 nov. 2007 à 12:53
Un textarea c'écrit comme ça :

<textarea name="votre_message" id="votre_message" rows="6" cols="30" ><?php echo (htmlentities($votre_message)) ?></textarea> 


Et le input pas besoin de le fermer deux fois :

<input name="nom" type="text" value="<?php echo (htmlentities($nom)) ?>" />"/><br />

Et la balise form ça ce ferme, mais là aussi j'imagine que le code est incomplet.
0
Bonjour,
Merci pour ces remarques.
Un peu de rigueur ne me ferait pas de mal avant de me lancer dans le monde merveilleux du php ;-)
Bien cordialement.
ed
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
s.spark Messages postés 2480 Date d'inscription vendredi 29 octobre 2004 Statut Contributeur Dernière intervention 13 février 2018 618
19 nov. 2007 à 14:28
Quand on utilise une instruction comme echo on doit toujours la fermer par pas un " ; "

<?php echo (htmlentities($votre_message)); ?>

Sinon t'auras de beau message d'erreurs :D
0