Effacement Message

Eléphant du PHP | 330 Messages

08 mars 2006, 10:31

Bonjour,

J' ai une page de contact avec plusieurs champs dont un champ message.

Si les champs ne sont pas remplis j'ai un message d'erreur me donnant toutes les cases vides.

Si une case n'est pas cochée alors que la case Message est remplie, quand je fais Envoi, le texte du Message disparaît.

Sans doute est ce parce que c'est une zone textarea car cela marche pour les zones texte.

Comment faire pour garder la case message remplie.

Merci d'avance

Mon code :
<table cellspacing="1" align="center" id="contact">
<tr><form id="form_contact" action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" name="form_contact">

	<td>Nom<br></td>
	<td><input type="text" name="nom" value="<?php echo $_POST['nom']; ?>" size="35" maxlength="50"><br></td>
	
</tr>
<tr>
	<td>Prenom<br></td>
	<td><input type="text" name="prenom" value="<?php echo $_POST['prenom']; ?>" size="35" maxlength="50"><br></td>
</tr>
<tr>
	<td>Email<br></td>
	<td><input type="text" name="email" value="<?php echo $_POST['email']; ?>" size="35" maxlength="100"><br></td>
</tr>

<tr>
	<td valign="top">Message<br></td>
	<td><textarea name="message" value="<?php echo $_POST['message']; ?>" rows="8" cols="60"></textarea><br></td>
</tr>
<tr>
	<td>&nbsp;<br></td>
	<td><input type="submit" name="envoi" value="Envoyer" ; return true"><input type="reset" name="annuler" id="annuler" value="Effacer" /> <br></td>
</tr>

</form>
</table>
<br><br>

<?php

$nomutilisateur    = isset($_POST['nom'])    ? trim($_POST['nom'])    : ""; 
$prenomutilisateur = isset($_POST['prenom']) ? trim($_POST['prenom']) : ""; 
$mailutilisateur   = isset($_POST['email'])  ? trim($_POST['email'])  : ""; 
$messageutilisateur = isset($_POST['message']) ? trim($_POST['message']) : ""; 


// si le bouton Envoi a été cliqué
if (isset($_POST['envoi'])) 
	{
	// si toutes les cases sont remplies et que l'adresse email est valide	
	if(!empty($nomutilisateur) && !empty($prenomutilisateur) && !empty($mailutilisateur) && !empty($messageutilisateur)&& ereg("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$", $mailutilisateur)) 
		{ 
   			 /*Envoi automatique de l'email */ 
    		$email    = "[email protected]"; 
    		$sujet    = "Contact"; 
    		$corps  = "Nom: ".$nomutilisateur."\r\n"; 
    		$corps .= "Prénom: ".$prenomutilisateur."\r\n"; 
    		$corps .= "Message: ".$messageutilisateur."\r\n"; 
    		$corps  = "From: ".$mailutilisateur ."\r\n"; 
    		
    		mail($email,$sujet,$corps, $entete); 
        		
		} 
	else 
		{ 
    		$msg_erreur  = "Données incomplètes :\n"; 
    		$msg_erreur .= "<ul>\n"; 
    		if(empty($nomutilisateur)) 
    			{ 
        			$msg_erreur .= "<li>Le nom de l'utilisateur est manquant</li>\n"; 
    			} 
    		if(empty($prenomutilisateur)) 
    			{ 
        			$msg_erreur .= "<li>Le prénom est manquant</li>\n"; 
    			} 
    		if(empty($mailutilisateur)) 
    			{ 
        			$msg_erreur .= "<li>L' adresse email est manquante</li>\n"; 
    			} 
    			else
    			{
	    			if(!(ereg("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$", $mailutilisateur))) 
	    				{	
	    					$msg_erreur .= "<li>L'adresse email n'est pas valide</li>\n"; 			
						}
				}				 
    		if(empty($messageutilisateur)) 
    			{ 
        			$msg_erreur .= "<li>Le message est manquant</li>\n"; 
    			} 
   			$msg_erreur .= "</ul>\n"; 
     
    	
    	echo("<table align=center width=300>");
    	echo("<TR align=center><SPAN Class=Red>$msg_erreur</SPAN></TR></table>\n");
    	  	 
    	
		} 
	}
//on ne fait rien
?>  

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

08 mars 2006, 10:40

Hello,

La valeur du textarea doit être placée entre les deux balises et pas dans un attribut value :)
Essaye comme ceci :
<textarea name="message" rows="8" cols="60"><?php echo $_POST['message']; ?></textarea>

Eléphant du PHP | 330 Messages

08 mars 2006, 11:02

Merci beaucoup cela a l'air de marcher.

Petite question supplémentaire :

Comment remettre les zones à vide après avoir envoyé le message.

Merci d'avance