Besoin d'aide pour un formulaire

Petit nouveau ! | 2 Messages

15 févr. 2006, 18:49

Bonjour,

Je suis novice dans le monde du PHP et je dois faire un formulaire.
J'ai un peu bidouillé mais forcément ça ne marche pas comme je le souhaite.


En gros le mail arrive bien au destinataire, mais dans la liste des mails reçus (avant de cliquer pour lire le contenu) je n'ai que l'objet qui apparait (ici $MailSubject - champ4)
et je ne sais pas comment faire pour afficher le "nom prénom - champ 1 et 2 " dans "De"

Aussi ... dans le contenu du mail que je reçois, j'ai dans mon cas l'inforamtion du champ7 (statut) qui aparait après le pavé message.
Je souhaite mettre le Champ7 à une autre place ... qu'il soit avec le champ4 de mon objet.
Si je le déplace dans mon code ... plus rien ne marche.


Pouvez-vous me donner un coup de main ?

voici le code :
<!-- DEBUT DU SCRIPT  mail.php3-->
<html>
<head></head>
<body>
<?

$MailTo = "[email protected]"; //adresse à laquelle sera envoyé le contenu du formulaire
$MailSubject = "$champ4"; //texte qui va figurer dans le champ "sujet" du email

/* Les routines suivantes permettent à chacune des variables de prendre la valeur des champs du formulaire et de les stocker ensuite dans la variable globale MailBody qui constituera le corps du message */

$Envoi = 1; //initialisation de la variable envoi à 1

if ($champ1 == ""){ //nom du champ1
echo("<font face=verdana size=2>Vous n'avez pas complété la case Nom</font><br>"); //message qui s'affiche si le visiteur n'a pas rempli ce champ
$Envoi = 0; //si le champ1 n'a pas été rempli, la variable envoi prend la valeur de 0
}
else {
$MailBody .= "Nom : $champ1\n"; //si le champ1 contient de l'information, elle est stockée dans la variable MailBody
}
if ($champ2 == ""){
echo("<font face=verdana size=2>Vous n'avez pas complété la case Prénom</font><br>");
$Envoi = 0;
}
else {
$MailBody .= "Prénom : $champ2\n";
}
if ($champ3 == ""){
echo("<font face=verdana size=2>Vous n'avez pas complété votre E-mail</font><br>");
$Envoi = 0;
}
else {
$MailBody .= "E-mail : $champ3\n";
}
if ($champ4 == ""){
echo("<font face=verdana size=2>Vous n'avez pas complété l'objet de votre message</font><br>");
$Envoi = 0;
}
else {
$MailBody .= "Objet : $champ4\n";
}
if ($champ6 == ""){
echo("<font face=verdana size=2>Vous devez taper votre message</font><br>");
$Envoi = 0;
}
else {
$MailBody .= "Message : $champ6\n";
}
if ($champ7 == ""){
echo("<font face=verdana size=2>Vous n'avez pas précisé votre Statut.</font><br>");
$Envoi = 0;
}
else {
$MailBody .= "Statut : $champ7\n";
}

//Envoi du message

if ($Envoi == 1) { //vérification que la variable envoi est bien à 1
mail($MailTo, $MailSubject, $MailBody, $MailHeader); //envoi du message

echo("<p><font face=verdana size=2>Votre message a bien été envoyé.<br>Il sera traité dans les plus brefs délais.</font>"); echo("<p>&nbsp;</p><p>&nbsp;</p><p align=\"center\"><a href=\"formulaire.htm\"><strong>Retour</strong></a></p>"); //affichage d'un message de confirmation.
}
?>
</body>
</html>
<!-- FIN DU SCRIPT mail.php3-->

Mammouth du PHP | 19672 Messages

15 févr. 2006, 21:39

Tu mélanges deux choses: le traitement des données validées et la validation elle-même: si tu faisais une chose après l'autre ? Il y a des tutos sur les formulaires pour ce type de problème, regarde dans la FAQ.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 2 Messages

17 févr. 2006, 16:04

oui ... :roll:

Mais si non pour afficher le nom prénom dans la boite de réception ça marche comment ?

Je voudrai juste que ça marque de ... objet ...

Je parle bien de l'affichage dans la liste de mail de la boite de reception et non pas du contenu du mail.

pour le moment il m'affiche l'objet mais dans "D" je n'ai pas d'info.

Eléphanteau du PHP | 12 Messages

17 févr. 2006, 16:45

Salut,

Deja tu devrais recupere tes variables champs avec $_POST['ma_variable']

Ensuite pour moi il y a moyen de faire un peut plus court et propre :
//page verifmail.php
<?php
if (isset($_POST['champ1'], $_POST['champ2'], /*... a completer */ ,$_POST['champ7']): //on verifie que les variables existent
  $MailBody = "";
  $error = 0;

  if($_POST['champ1') != ""): //on verifie que la varible n'est pas vide
    $MailBody .= "Nom : ".$_POST['champ1'];  
  else :
    $error = 1; 
  endif;
  if($_POST['champ2') != ""): //on verifie que la varible n'est pas vide
    $MailBody .= "Pr&eacute;nom : ".$_POST['champ2'];  
  else :
    $error = 2; 

/*... a completer */ 

  if($_POST['champ7']) != ""): //on verifie que la varible n'est pas vide
    $MailBody .= "Statut : ".$_POST['champ7']; 
  else :
    $error = 7; 
  endif;

  if($error == 0): //tout est bon on envoi le mail
    $MailTo = "[email protected]"; //adresse à laquelle sera envoyé le contenu du formulaire 
    $MailSubject = $_POST['champ4']; //texte qui va figurer dans le champ "sujet" du email 
    mail($MailTo, $MailSubject, $MailBody, $MailHeader); //envoi du message 

    echo("<p><font face=verdana size=2>Votre message a bien été envoyé.<br>Il sera traité dans les plus brefs délais.</font>"); 
    echo("<p>&nbsp;</p><p>&nbsp;</p><p align=\"center\"><a href=\"formulaire.htm\"><strong>Retour</strong></a></p>"); //affichage d'un message de confirmation. 

  else: //un champs est vide on retourne sur la page on l'on ecrit le mail
    header('Location: mail.php?error='.$error); 
  endif;

else: //une ou plusieurs variables n'exites pas
  header('Location: mail.php');
endif;
?>

Et dans ton fichier mail.php ou tu ecrit ton email tu verifie les erreurs :
<?php
  if(isset($_GET['error']) && ($_GET['error'] != "")): //la variable error existe et elle n'est pas vide
    switch ($_GET['error']):
      case 1: echo("<font face=verdana size=2>Vous n'avez pas complété la case Nom</font><br />"); //error = 1
      case 2: echo("<font face=verdana size=2>Vous n'avez pas complété la case Prénom</font><br />"); //error = 2
/*... a completer */ 
    endswitch;
  endif;
?>