8791 sujets

Développement web côté serveur, CMS

Me revoici sur le forum.
Bonjour à tous.
Je vous explique mon souci du jour.

J'ai un formualaire "formulaire00.html" qui doit m'envoyer un mail
par "traitement.php" après avoir été validé par "validation.php";
Une fois que ce mail a été envoyé et validé, "formulaire01.html"
confirme à l'internaute quer son mail a bien été envoyé.

Et c'est au niveau de la validation et de l'envoi que cela merdouille.
Car, si il y des erreurs de validation, il faut garder l'affichage de
"formulaire00.html", avec la variable "$erreur" qui s'affiche ou se mette à jour
dans la div "myform_errorloc" (en fin de table).

Pouvez-vous m'aider ???
Merci d'avance.
Bonne journée.

JYves




Voici la validation du formulaire (validation.php) :

<?php
$erreur="";

$nom = $_POST['nom'];
if (isset($nom) == false) {
$erreur .= "> Votre nom est manquant !";
}
$localite = $_POST['localite'];
if (isset($localite) == false) {
$erreur .= "> Votre localité est manquante !";
}
$tel = $_POST['tel'];
if (isset($tel) == false) {
$erreur .= "> Votre numéro tél/gsm est manquant !";
}
$email = $_POST['email'];
if (isset($email) == false) {
$erreur .= "> Votre adresse email est manquante !";
}
if (filter_var($email, FILTER_VALIDATE_EMAIL) == FALSE) {
$erreur .= "> Adresse email pas valide !\n";
}
$message = $_POST['message'];
if (isset($message) == false) {
$erreur .= "> Votre message est manquant !";
}

if (strlen($erreur) == 0) {
Header("Location: traitement.php");
} else {
Header("Location: ../formulaire00.html");
}
?>



voici l'envoi du mail (traitement.php) :

<?php
date_default_timezone_set('Europe/Brussels');
$jour = array("Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi");
$mois = array("","Janvier",utf8_encode("Février"),"Mars","Avril","Mai","Juin","Juillet",utf8_encode("Août"),"Septembre","Octobre","Novembre",utf8_encode("Décembre"));

$datefr = $jour[date("w")]." ".date("d")." ".$mois[date("n")]." ".date("Y");
$heurefr = "- ".date("H:i:s");

$vousetes = $_POST['vousetes'];
$societe = $_POST['societe'];
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$adresse = $_POST['adresse'];
$pays = $_POST['pays'];
$codepostal = $_POST['codepostal'];
$localite = $_POST['localite'];
$tel = $_POST['tel'];
$email = $_POST['email'];
$concerne = $_POST['concerne'];
$message = $_POST['message'];

switch($concerne) {
case 'CRE':
$concerne = utf8_encode('CREATION');
break;
case 'IMP':
$concerne = utf8_encode('IMPRESSION');
break;
case 'WEB':
$concerne = utf8_encode('WEB DESIGN');
break;
default:
$concerne = utf8_encode('Ordre général');
break;
}
$societe = ucwords(strtolower($societe));
$nom = strtoupper(strtolower($nom));
$localite = strtoupper(strtolower($localite));
$prenom = ucwords(strtolower($prenom));

$destinataire1 = "fl@skynet.be";
$destinataire2 = $email;
$objet1 = "Demande de Renseignements";
$objet2 = "Copie de votre Demande de Renseignements";

$msg = "\n";
$msg .= "============================================================================\n";
$msg .= "Message provenant d'un $vousetes\n";
$msg .= "\n";
$msg .= "Entreprise : $societe\n";
$msg .= ">>> Contact : $nom $prenom\n";
$msg .= "$adresse\n";
$msg .= "$pays - $codepostal $localite\n";
$msg .= utf8_encode("Tél : ")."$tel\n";
$msg .= "Email : $email\n";
$msg .= "\n\n";
$msg .= "Concerne : $concerne\n";
$msg .= "\n";
$msg .= "Message :\n";
$msg .= "$message\n";
$msg .= "\n";
$msg .= "============================================================================\n";
$msg .= "\n";

$entete = "From: c <>\n";
$entete .= "Reply-To: $destinataire2\n";
$entete .= "Content-Type: text/plain; charset='UTF-8'\n";
$entete .= "Content-Disposition: inline\n";
$entete .= "Content-Transfer-Encoding: 8bit\n";
$entete .= "MIME-Version: 1.0\n";
$entete .= "Date: $datefr $heurefr\n";

$resultat = mail(utf8_decode($destinataire1),utf8_decode($objet1), utf8_decode($msg), utf8_decode($entete));
if ($resultat == false) {
Header("Location: ../formulaire02.html");
} else {
Header("Location: ../formulaire01.html");
}
?>



Voici le code html (une partie de formulaire00.html) :
(PS. formulaire01.html ne fait que confirmer l'envoi correct du message)

<form action="php/traitement.php" method="post" name="myform" id="formulaire">
<table width="840" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="95" height="30" valign="top">Vous &ecirc;tes<span class="texterouge">*</span></td>
<td width="370" height="30" valign="top">
<label><input type="radio" name="vousetes" value="Professionnel" checked>
Professionnel</label>
<label><input type="radio" name="vousetes" value="Particulier" >
Particulier</label></td>
<td width="375" height="30" valign="middle"><label for="concerne">Concerne : </label>
<select name="concerne" id="concerne">
<option value="NC">Ordre g&eacute;n&eacute;ral</option>
<option value="CRE">Cr&eacute;ation</option>
<option value="IMP">Impression </option>
<option value="WEB">Web Design</option>
</select></td>
</tr>
<tr>
<td width="95" height="30" valign="top">Soci&eacute;t&eacute;</td>
<td width="370" height="30" valign="top"><input name="societe" type="text" id="societe" size="50"></td>
<td width="375" height="30" rowspan="7" valign="top"><label for="message5"></label>
<textarea name="message" id="message5"></textarea></td>
</tr>
<tr>
<td width="95" height="30" valign="top">Nom<span class="texterouge">*</span></td>
<td width="370" height="30" valign="top"><input name="nom" type="text" id="nom" size="50"></td>
</tr>
<tr>
<td width="95" height="30" valign="top">Pr&eacute;nom</td>
<td width="370" height="30" valign="top"><input name="prenom" type="text" id="prenom" size="50"></td>
</tr>
<tr>
<td width="95" height="30" valign="top">Adresse</td>
<td width="370" height="30" valign="top"><input name="adresse" type="text" id="adresse" size="50"></td>
</tr>
<tr>
<td width="95" height="30" valign="top">Code Postal</td>
<td width="370" height="30" valign="top"><input name="codepostal" type="text" id="codepostal" size="10"></td>
</tr>
<tr>
<td width="95" height="30" valign="top">Localit&eacute;<span class="texterouge">*</span></td>
<td width="370" height="30" valign="top"><input name="localite" type="text" id="localite" size="50"></td>
</tr>
<tr>
<td width="95" height="30" valign="top">Pays<span class="texterouge">*</span></td>
<td width="370" height="30" valign="top"><select name="pays" id="pays">
<option value="BE" selected>Choisissez, svp !</option>
<option value="BE">Belgique</option>
<option value="FR">France</option>
<option value="CH">Suisse</option>
<option value="LU">Luxembourg</option>
<option value="NL">Pays-bas</option>
<option value="NC">Autre pays</option>
</select></td>
</tr>
<tr>
<td width="95" height="30" valign="top">T&eacute;l / Gsm<span class="texterouge">*</span></td>
<td width="370" height="30" valign="top"><input name="tel" type="text" id="tel" size="50"></td>
<td width="375" height="30" align="right" valign="bottom">
<label for="envoi"></label>
<input type="submit" name="envoi" id="envoi" value="Envoyer la demande">
&nbsp;&nbsp;&nbsp;
<label for="erase"></label>
<input type="reset" name="erase" id="erase" value="Effacer tout"></td>
</tr>
<tr>
<td width="95" height="30" valign="top">E-mail<span class="texterouge">*</span></td>
<td width="370" height="30" valign="top"><input name="email" type="text" id="email" size="50"></td>
<td width="375" height="30" align="right" valign="top"></td>
</tr>
<tr>
<td width="95" height="75" valign="top"> </td>
<td width="370" height="90" valign="top"><div class="error_strings" id="myform_errorloc"></div></td>
<td width="375" height="75" align="right" valign="top"></td>
</tr>
</table>

<span class="texterouge"><span class="etoilepostscriptum">*</span></span><span class="postscriptum">Champs obligatoires</span>
</form>
Modifié par jytest (03 May 2012 - 19:23)
salut

Pas logique

a écrit :
$nom = $_POST['nom'];
if (isset($nom) == false) {
$erreur .= "> Votre nom est manquant !";
}


plutôt


if (!empty($_POST['nom']))
    $nom = trim(htmlentities($_POST['nom']))
else $erreur .= '> Votre nom est manquant !';



if ($resultat == false) {

if(false === mail(utf8_decode($destinataire1),utf8_decode($objet1), utf8_decode($msg), utf8_decode($entete)))


Une ligne et une variable en moins pour la même chose Smiley rolleyes

a écrit :
"formulaire00.html", avec la variable "$erreur" qui s'affiche ou se mette à jour


Une session ou javascript, plutôt une session. Perso, j'utiliserais plutôt un array pour les erreurs à la place d'une string.
Bonjour,

Merci de ton passage,
Mon souci, mon véritable souci c'est :

Et c'est au niveau de la validation et de l'envoi que cela merdouille.
Car, si il y des erreurs de validation, il faut garder l'affichage de
"formulaire00.html", avec la variable "$erreur" qui s'affiche ou se mette à jour
dans la div "myform_errorloc" (en fin de table).



Pour la variable (au lieu d'un tableau), je le savais,
mais je teste "simple",
car mon but premier est d'avoir $erreur
qui s'affiche dans ma page HTML "formulaire00.html" !!!
Merci, néanmoins.

Isset, c'est pas valable ???

Peux-tu m'aider ???
salut

a écrit :
il faut garder l'affichage de
"formulaire00.html", avec la variable "$erreur" qui s'affiche ou se mette à jour


plutôt que l'affichage j'imagine que ce sont les données envoyées que tu veux garder, si c'est le cas, tout en session. $_SESSION tu connais? mais il faudrait que ta page soit en php. si tu veux garder la page en html, validation javascript à la volée et donc pas besoin du bloc d'erreurs, quelques plugins jquery font çà très bien.

a écrit :
Isset, c'est pas valable ???


http://www.expreg.com/expreg_article.php?art=isset_emptyà toi de te faire une idée

tu initialise une variable avec une autre dont tu n'est pas certain qu'elle existe, grosse erreur de logique.


un exemple court, je dois travailler


//demarre la session dans validation.php
session_start();
//tableaux de session
$erreur = $_SESSION['erreur'];
$valide = $_SESSION['valide'];
if (!empty($_POST['nom'])) {   
   $nom = trim(strip_tags($_POST['nom']));
	array_push($valide,$nom);
}
else array_push($erreur,'Votre nom est manquant !');

//etc

// et à la fin

if (isset($_SESSION['erreur']) && count($_SESSION['erreur']) != 0)
	Header("Location: traitement.php");
else Header("Location: ../formulaire00.php");


dans formulaire00.php tu rajoute tout en haut session_start(); tu pourras ainsi récupérer tout ton formulaire grace aux
deux variables de session. En gros, voilà la marche à suivre.