Page 1 sur 1

Message d'Erreur

Posté : 07 mars 2006, 15:06
par Photographiquement Vôtre
Bonjour,

J' ai une page de contact avec plusieurs champs.

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

Si ensuite je remplis une case vide (exemple le nom) en laissant celles qui étaient vides et que je fais envoi, cette case n'est plus citée dans le message d'erreur ce qui est recherché mais le problème c'est que cette case est mise à blanc.

Comment faire pour garder la case remplie.

Merci d'avance
<?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	
	if(!empty($nomutilisateur) && !empty($prenomutilisateur) && !empty($mailutilisateur) && !empty($messageutilisateur)) 
		{ 
   			 /*Envoi automatique de l'email */ 
    		$email    = "[email protected]"; 
    		$sujet    = "Contact"; 
    		$message  = "Nom: ".$nomutilisateur."\r\n"; 
    		$message .= "Prénom: ".$prenomutilisateur."\r\n"; 
    		$message .= "Message: ".$messageutilisateur."\r\n"; 
    		$entete  = "From: ".$mailutilisateur ."\r\n"; 
    		mail($email,$sujet,$message, $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"; 
    			} 
    		if(empty($messageutilisateur)) 
    			{ 
        			$msg_erreur .= "<li>Le message est manquant.</li>\n"; 
    			} 
   			$msg_erreur .= "</ul>\n"; 
     
    		echo($msg_erreur); 
		} 
	}
//on ne fait rien
?>  

Posté : 07 mars 2006, 15:14
par DocType
Déjà on donne également le code de la partie formulaire d'envoi...ça peut être utile tu sais !

Ensuite c'est très simple ==> le post est recuperé en php, suffit d'agencer un peu tout ça ! C'est tout à fait normal que les cases redeviennent vierges. Pour palier à cela, il faut leur donner un value...

Comment faire ?
Tu récupères la valeur de tes champs avec le script php et si ce n'est pas correct, tu affiches un message d'erreur suivi du formulaire (le tout dans la même page pour éviter d'appeller des variables de session...). Le formulaire aura quelque peu été modifié avec un test de ce type sur chaque champ
"si la variable post du champs existe, on fait:
echo value='{variable post du champ}'"

Je t'invite également à modifier le titre de ton topic, car tous les sujets de ces forums pourraient être ainsi nommés...

Message d'Erreur

Posté : 07 mars 2006, 15:24
par Photographiquement Vôtre
Merci beaucoup pour ta réponse mais je n'ai pas bien compris ce que je devais faire.

Voici le texte avec le formulaire :
<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="" size="35" maxlength="50"><br></td>
</tr>
<tr>
	<td>Prenom<br></td>
	<td><input type="text" name="prenom" value="" size="35" maxlength="50"><br></td>
</tr>
<tr>
	<td>Email<br></td>
	<td><input type="text" name="email" value="" size="35" maxlength="100"><br></td>
</tr>

<tr>
	<td valign="top">Message<br></td>
	<td><textarea name="message" rows=8 cols="60"></textarea><br></td>
</tr>
<tr>
	<td>&nbsp;<br></td>
	<td><input type="submit" name="envoi" value="Envoyer" ; return true"><br></td>
</tr><input type="hidden" name="action" value="submit">
</form>
</table>

<?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	
	if(!empty($nomutilisateur) && !empty($prenomutilisateur) && !empty($mailutilisateur) && !empty($messageutilisateur)) 
		{ 
   			 /*Envoi automatique de l'email */ 
    		$email    = "[email protected]"; 
    		$sujet    = "Contact"; 
    		$message  = "Nom: ".$nomutilisateur."\r\n"; 
    		$message .= "Prénom: ".$prenomutilisateur."\r\n"; 
    		$message .= "Message: ".$messageutilisateur."\r\n"; 
    		$entete  = "From: ".$mailutilisateur ."\r\n"; 
    		mail($email,$sujet,$message, $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"; 
    			} 
    		if(empty($messageutilisateur)) 
    			{ 
        			$msg_erreur .= "<li>Le message est manquant.</li>\n"; 
    			} 
   			$msg_erreur .= "</ul>\n"; 
     
    		echo($msg_erreur); 
		} 
	}
//on ne fait rien
?>  

Posté : 07 mars 2006, 15:27
par charabia
Il te suffit dans chaque value de tes champs de récupérer la valeur de la variable après envoi du formulaire.
<input type="text" name="nom" value="<?php echo $_POST['nom']; ?>" size="35" maxlength="50">