Fomrulaire

cmoa266 -  
 cmoa266 -
Bonjour,

Pour que mon site soit fini, il ne me manque plus qu'à ce que le bouton "envoyer" soit fait !

Je fais mon site avec dreamweaver 8, et ca fait quelques jours que je cherche sur différents forums la solution à mon problème, mais ça ne donne rien.

J'ai trouvé un code que j'ai copié collé mais toujours pareil, j'ai un petit soucis. J'espère que vous pourrez me venir en aide au plus vite :)

J'ai donc créée ma première page en html avec le code ci dessous :

<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&eacute;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 une deuxième page en php nommé "formmail.php" avec le code ci-dessous :

<?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 &eacute;t&eacute; envoy&eacute;. <br />
Nous vous r&eacute;pondrons dans les plus brefs d&eacute;lais. </p>
</body>
</html>


Cependant, j'ai le message ci-dessous quand je clique sur le bouton "envoyer" :

"Warning: Variable passed to each() is not an array or object in /home/i/infolex/html/formmail.php on line 17"

Voilà... et donc j'aimerais que quand on clique sur le bouton "envoyer", le formulaire me soit directement envoyé sur ma boîte mail, sans que le visiteur doit passer par "outlook" ou un autre programme de ce genre...

Merci à tous ceux qui prendront la peine d'essayer de résoudre mon problème !

A bientôt.

8 réponses

Alain_42 Messages postés 5413 Statut Membre 894
 
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>
0
cmoa266
 
Oula, c'est bien compliqué tout ca :s

J'ai pas tout très bien compris, je suis vraiment désolé !

J'ai copié collé ton code pour essayer mais ça ne fonctionne toujours pas. Je suis vraiment pas doué du tout...

Bonne soirée
0
Alain_42 Messages postés 5413 Statut Membre 894
 
qd tu dis ça ne marche pas : ça ne veut rien dire du tout,

dis nous si tu as un message d'erreur , quel message, si tu ne reçoit pas le mail etc...

ce n'est pas très compliqué on esaye de t'expliquer un peu.

aussi il faut que tu complétes $headers
0
Alain_42 Messages postés 5413 Statut Membre 894
 
voilà pour le header, à adapter à ton cas:

//attention chez OVH il faut terminer les lignes par \n 
//chez un autre hebergeur il faut terminer les lignes par \r\n
		$headers  = "Return-path: TON_adresse_mail"."\n";
		$headers .= "From: \"TES_NOM_PRENOM\"<TON_adresse_mail>"."\n";
		$headers .= "MIME-Version: 1.0"."\n";
		$headers .= "Content-Type: text/plain; charset=\"iso-8859-1\""."\n";
		$headers .= "Content-Transfer-Encoding: 8bit"."\n"; 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ozimandias Messages postés 528 Statut Membre 46
 
Ton erreur; elle est ici:

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


Apparemment, ton $HTTP_POST_VARS n'est pas un tableau. De plus, à partir de 4.1.0, on utilise plus $HTTP_POST_VARS mais $_POST.
0
cmoa266
 
Je ne reçois pas de mail. Aucun message d'erreur cependant...

Pour le header (désolé je suis vraiment nul) je dois le placer dans la page "formmail.php" ? et si oui, je le place où exactement dans le code ?

Merci beaucoup pour ta patience !!!y
0
Alain_42 Messages postés 5413 Statut Membre 894
 
he bien oui il faut l'adapter et le placer dans ton script formmail.php

mets ton adresse mail à l'endroit voulu

<?php
//TEST
echo "on passe bien par le script formmail.php";
//fin TEST

	//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";
	///// le header là !!
	//attention chez OVH il faut terminer les lignes par \n 
	//chez un autre hebergeur il faut terminer les lignes par \r\n
		$headers  = "Return-path: TON_adresse_mail"."\n";
		$headers .= "From: \"TES_NOM_PRENOM\"<TON_adresse_mail>"."\n";
		$headers .= "MIME-Version: 1.0"."\n";
		$headers .= "Content-Type: text/plain; charset=\"iso-8859-1\""."\n";
		$headers .= "Content-Transfer-Encoding: 8bit"."\n"; 
		
		
	$subject = "Prise de Contact";
	$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>
0
cmoa266
 
Ca a l'air de fonctionner, mais les messages mettent super longtemps avant d'arriver (20-30 min, voire plus des fois)... Est-ce qu'il y aurait une solution pour aller plus vite ?

Mille fois merci !
0
cmoa266
 
Je réctifies, maintenant je les reçois instantanément !!!

Merci mille fois, je ne sais comment te le dire, mais ca vient vraiment du coeur !!!

Et bien voila, problème résolu :D
0