Un soucis avec echo

Fermé
startom Messages postés 208 Date d'inscription mercredi 15 juillet 2009 Statut Membre Dernière intervention 30 avril 2014 - 11 janv. 2013 à 17:21
 ReDLoG - 11 janv. 2013 à 18:20
Bonjour,



Il s'agit d'un formulaire de contact, voici le code PHP :

<?

$error = '';
$envoye = '';
$name = '';
$prenom = '';
$email = '';
$societe = '';
$comments = '';

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

$name = $_POST['name'];
$prenom = $_POST['prenom'];
$email = $_POST['email'];
$comments = $_POST['comments'];


if(trim($name) == '') {
$error = '<div class="error_message">Vous avez oublié de saisir votre nom !</div>';
} else if(trim($email) == '') {
$error = '<div class="error_message">Vous avez oublié de saisir votre courriel !</div>';


} else if(!isEmail($email)) {
$error = '<div class="error_message">Le courriel est invalide !</div>';
}

if(trim($prenom) == '') {
$error = '<div class="error_message">Vous avez oublié de saisir votre prénom !</div>';
} else if(trim($comments) == '') {
$error = '<div class="error_message">Vous avez oublié de saisir votre message !</div>';
}

if($error == '') {

if(get_magic_quotes_gpc()) {
$comments = stripslashes($comments);
}



$address = "contact@monsite.com";


$e_subject = 'You\'ve been contacted by ' . $name . '.';


$e_body = "You have been contacted by $name with regards to , their additional message is as follows.\r\n\n";
$e_content = "\"$comments\"\r\n\n";


$e_reply = "You can contact $name via email, $email";

$msg = $e_body . $e_content . $e_reply;

mail($address, $e_subject, $msg, "From: $email\r\nReply-To: $email\r\nReturn-Path: $email\r\n");


echo $envoye = '<div class="succsess_page">Le message a bien été envoyé.</div>';

}
}

if(!isset($_POST['contactus']) || $error != '')
{
?>


S'il y a une erreur, un bandeau s'affiche en haut de page pour le signaler sans changer de page ni changer quoique ce soit sur la page actuelle. Cependant je voudrais que ce soit la même chose lorsqu'il n'y a pas d'erreurs ; c'est à dire un ce même bandeau mais qui indique "Le message a bien été envoyé." sauf que actuellement ce bandeau s'affiche mais supprime tout les blocs à remplir enfin le formulaire dans sa totalité à l'envoi.

Une ligne doit code doit faire que cela arrive mais après des heures de recherches je suis sans réponses.

1 réponse

Bonsoir,
Quelques amélirations quant à la lisibilité de ce code et modification effectuée pour résoudre ton problème :
<?php
$error = '';
$envoye = '';
$name = '';
$prenom = '';
$email = '';
$societe = '';
$comments = '';
if(isset($_POST['contactus'])) {
	$name = $_POST['name'];
	$prenom = $_POST['prenom'];
	$email = $_POST['email'];
	$comments = $_POST['comments'];
	if(trim($name) == '') 
		$error = "Vous avez oublié de saisir votre nom !";
	} else if(trim($email) == '') { 
		$error = "Vous avez oublié de saisir votre courriel !";
	} else if(!isEmail($email)) { 
		$error = "Le courriel est invalide !";
	}
	if(trim($prenom) == '') {
		$error = "Vous avez oublié de saisir votre prénom !";
	} else if(trim($comments) == '') {
		$error = "Vous avez oublié de saisir votre message !";
	}
	if($error == '') {
		if(get_magic_quotes_gpc()) {
			$comments = stripslashes($comments);
		}
		$address = "contact_at_monsite.com";
		$e_subject = "You've been contacted by".$name;
		$header = "From: $email\r\n";
		$header .= "Reply-To: $email\r\n";
		$header .= "Return-Path: $email\r\n";
		$e_body = "You have been contacted by ".$name." with regards to, their additional message is as follows.\r\n";
		$e_content = $comments."\r\n";
		$e_reply = "You can contact ".$name." via email, ".$email;
		$msg = $e_body . $e_content . $e_reply;
		mail($address, $e_subject, $msg, "From: $email\r\nReply-To: $email\r\nReturn-Path: $email\r\n");
		$envoye = "Votre message a bien été envoyé.";
	}
}
// Supprimer ce bloc de code conditionnel
if(!isset($_POST['contactus']) || $error != '') {
	// ICI LE CODE ACTUEL HTML DE TON FORMULAIRE DE CONTACT
}
// End suppression de code
// Remplacer par ce qui suit
if(isset($error)) echo "div class=\"error_message\">".$error."</div>\n";
if(isset($envoye)) echo "<div class=\"succsess_page\">".$envoye."</div>\n";
?><!--PLACE ICI LE CODE HTML DE TON FORMULAIRE DE CONTACT-->

P.S. : J'ai supprimé l'arrobase dans l'adresse mail car CCM bloque ma réponse, pense à le remettre si tu fais un copier coller de ce code
0