Problème bête en html/php

Je n'arrive pas à relier :

<form method=POST action=formmail.php >
<table align="center">
<tr>
<td>Nom:</td>
<td><input type=text name=nom size=30 /></td>
</tr>
<tr>
<td>Prénom:</td>
<td><input name=prenom type=text size=30 /></td>
</tr>
<tr>
<td>Email:</td>
<td><input name=mail type=text size=30 /></td>
</tr>
<tr>
<td>Telephone:</td>
<td><input name=phone type=text size=30 /></td>
</tr>
<tr>
<td>Ville:</td>
<td><input type=text name=ville size=30 /></td>
</tr>
</table>
<p align="center">Message : </p>
<div align="center">
<p>
<textarea name=message cols=32 rows=6 ></textarea>
</p>
<p>
<input name="submit" type=submit value=Envoyer />
<input name="reset" type=reset value=Annuler />
<input type=hidden name=subject value=formmail />
<br />
</p>
</div>
</form></td>

ET SA:

<?php
//Pour définir chaque input du formulaire, ajouter le signe de dollar devant
$msg .= "Nom:\t$nom\n";
$msg .= "Prenom:\t$prenom\n";
$msg .= "E-Mail:\t$mail\n";
$msg .= "Telephone:\t$phone\n";
$msg .= "Ville:\t$ville\n";
$msg .= "Message:\t$message\n";

//Pourait continuer ainsi jusqu'à la fin du formulaire MODIFIER L'ADRESSE D'ENVOI
$TO = "email@domaine.com";
$h = "From: " . $TO;
$subject = "Prise de Contact";
$message = "";

while (list($key, $val) = each($HTTP_POST_VARS))
{$message .= "$key : $val\n";}

mail($TO, $subject, $msg);

?>

<body>
<p align="center">Merci <? echo($prenom) ?> <? echo($nom) ?>, le message a bien été envoyé. <br />
Nous vous répondrons dans les plus brefs délais. </p>
</body>
</html>
Configuration: Windows XP Internet Explorer 7.0

11 réponses

  1. ha excuses alors voiçi une copie de ma réponse:

    Bon je t'ai rectifié pas mal de choses voir commentaires:
    
    il reste à completer le $headers, ça ne marchera pas comme ça suivant l'hebergeur, vas voir sur Google
    
    <?php
    /*plusieurs erreurs
     - si tu concatènes il faut partir de qq chose donc le premier doit etre un $msg = ....
    	- il faut récupérer le svaleurs postées $_POST car selon la config de ton serveur tu ne peux pas avoir directement	
    	$nom il faut faire $nom=$_POST['nom']
    	- pour eviter une errur de php il faut verifier que le formulaire a été posté if(isset($_POST('submit']
    */
    //Pour définir chaque input du formulaire, ajouter le signe de dollar devant:: NON ça marche pas tout le temps si Register Global est à OFF !!
    if(isset($_POST['submit'])){
    	//recup des valeurs postées
    	$nom=$_POST['nom']; //maintenant on met $_POST au lieu de $HTTP_POST_VARS
    	$prenom=$_POST['prenom']; 
    	$mail=$_POST['mail']; 
    	$phone=$_POST['phone']; 
    	$ville=$_POST['ville']; 
    	$message=$_POST['message']; 
    
    
    	$msg = "Nom:\t$nom\n"; 
    	$msg .= "Prenom:\t$prenom\n";
    	$msg .= "E-Mail:\t$mail\n";
    	$msg .= "Telephone:\t$phone\n";
    	$msg .= "Ville:\t$ville\n";
    	$msg .= "Message:\t$message\n";
    
    
    	$TO = "email@domaine.com";
    	$headers  = "From: " . $TO;
    	$subject = "Prise de Contact";
    	//$message = ""; si tu mets ça ici ça écrase ce qui est dans ta variable $message ligne 16 !!!!!!
    	/* POURQUOI CETTE BOUCLE TU ReCUPeRES D2JA LES VALEURS AVANT !
    	while (list($key, $val) = each($HTTP_POST_VARS))
    	{$message .= "$key : $val\n";}
    	*/
    	$env_mail=mail($TO, $subject, $msg,$headers);
    	//messages
    ?>
    		<body>
    	<p align="center">
    <?php
    	if($env_mail){
    	echo "Merci $prenom $nom)  le message a bien &eacute;t&eacute; envoy&eacute;. <br />
    	Nous vous r&eacute;pondrons dans les plus brefs d&eacute;lais. </p>";
    	
    	}else{
    		echo "Pb envoi mail ";
    	}
    }
    
    ?>
    </p>
    	</body>
    	</html>
    
    1. Ce n'est pas la meme personne que vous avez vu tout à l'heure, j'ai juste repris son code et reposer la même question espérant avoir une réponse satisfaisante
      1. je reconnais ce problème auquel j'ai déja répondu tout à l'heure.

        Pourquoi poster plusieurs fois un même PB sous des pseudos différents ?
        1. Que l'on mette des guillements ou pas, ça ne change rien. C'est juste conventionnel. ^^ Mais c'est quand même conseillé.

          J'ai testé le code, ça fonctionne sauf pour $HTTP_POST_VARS, il faut mettre une valeur dedans $HTTP_POST_VARS['valeur']. Je sais pas ce que tu veux mettre dedans par contre.
          1. Salut

            Vérifie bien que ton fichier formmail.php soit bien dans le même dossier que ton fichier qui contient ton formulaire

            Bye
            1. Il y a des erreurs qui s'affichent ? J'ai pas testé, donc c'est possible.
              1. Ah d'accord j'ai compris, la deuxième, je l'avais appellé formmail.htm
                1. Ta deuxième page, elle doit s'appeler formmail.php. Elle contient ce code :
                  <?php
                  //Pour définir chaque input du formulaire, ajouter le signe de dollar devant
                  $msg = "Nom:\t".$_POST['nom']."\n";
                  $msg .= "Prenom:\t".$_POST['prenom']."\n";
                  $msg .= "E-Mail:\t".$_POST['mail']."\n";
                  $msg .= "Telephone:\t".$_POST['phone']."\n";
                  $msg .= "Ville:\t".$_POST['ville']."\n";
                  $msg .= "Message:\t".$_POST['message']."\n"; 
                  
                  
                  //Pourait continuer ainsi jusqu'à la fin du formulaire MODIFIER L'ADRESSE D'ENVOI
                  $TO = "email@domaine.com";
                  $h = "From: " . $TO;
                  $subject = "Prise de Contact";
                  $message = "";
                  
                  while (list($key, $val) = each($HTTP_POST_VARS))
                  {$message .= "$key : $val\n";}
                  
                  mail($TO, $subject, $msg);
                  ?>
                  <html>
                  <body>
                  <p align="center">Merci <?php echo $_POST['prenom']; ?> <?php echo $_POST['nom']; ?>, le message a bien été envoyé. <br />
                  Nous vous répondrons dans les plus brefs délais. </p>
                  </body>
                  </html>

                  Donc je comprends pas trop ton problème.
                  1. Oui mais comment faire pour que quand je clique sur ''envoyer", la deuxieme page s'affiche???
                    1. Bonjour,
                      C'est plutôt (à tester) :
                      $msg = "Nom:\t".$_POST['nom']."\n";
                      $msg .= "Prenom:\t".$_POST['prenom']."\n";
                      $msg .= "E-Mail:\t".$_POST['mail']."\n";
                      $msg .= "Telephone:\t".$_POST['phone']."\n";
                      $msg .= "Ville:\t".$_POST['ville']."\n";
                      $msg .= "Message:\t".$_POST['message']."\n";