Formulaire

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

26 avr. 2006, 13:03


HTML
Déjà est-ce que tu as une action dans ta balise form ? Est-ce que le chemin du fichier de l'action est correct ? Et est-ce que tous tes champs ont un attribut name rempli ?

PHP
Si le print_r de $_POST n'affiche rien, c'est que tu ne récupères aucune donnée de ton formulaire....
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphanteau du PHP | 22 Messages

26 avr. 2006, 13:28

Vu que je reçois un e-mail, mais vide, oui le chemin est correcte. Tous les champs ont un attribut name et j'ai une action dans la balise form.

Pour le php, comme après avoir remplis le formulaire une redirection se fait sur la apge d'accueil, je n'ai pas la moindre idée de ce qu'est sensé faire print_r, ni si je l'ai placé correctement :oops:

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

26 avr. 2006, 13:30

Et bien enlève la redirection pour le moment...

print_r t'affiche le contenu d'un tableau (regarde la doc)

donc tu devrais avoir qqchose comme ça :
Array(
   [cellule1] => 'valeur1',
   [cellule2] => 'valeur2',
   [cellule3] => 'valeur3',
}

Eléphanteau du PHP | 22 Messages

26 avr. 2006, 13:51

Ok, alors appremment il ne récupère rien, parce que ça me donne

Code : Tout sélectionner

Array ( )
Ce qui n'est pas vraiment une surprise, car je reçois un e-mail grâce à ce formulaire (ce qui est le but), mais il est vide.

Mais comment faire pour qu'il récupère les informations du formulaire?

Il me semble pourtant que mon mini script est juste. Ou ce n'est pas le cas ?[/quote]

Avatar du membre
ViPHP
ViPHP | 3008 Messages

26 avr. 2006, 13:54

Que te donnes comme résultat ce code quand tu envoies le formulaire ?
Page mail.php :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
	<title>Untitled</title>
</head>

<body>
<form method=POST action="mail.php"> 
<table cellpadding="0" cellspacing="0" border="0" align="center" valign="bottom"> 
<tr> 
	<td width="250" height="20" valign="bottom" class="ctxt">Nom :</td> 
</tr> 
<tr> 
	<td height="20" valign="bottom"><input type="text" name="lastname" class="form"><input type="Submit" value="ok"></td> 
</tr>
</table>
<?php
echo '<pre>'; 
print_r($_POST); 
echo '</pre>';
?>
</body>
</html>

Eléphanteau du PHP | 22 Messages

26 avr. 2006, 14:01

Ca fonctionne avec ce que tu m'as donné et l'action c'est mon form.php :shock:

Avatar du membre
ViPHP
ViPHP | 3008 Messages

26 avr. 2006, 14:05

Oki je vois ton erreur. Il s'agit du enctype="text/plain" que tu as rajouté dans ton formulaire. Cette instruction est utile pour un envoie avec mailto, ce qui n'est pas ton cas.

Enlèves le et tout devrait marcher correctement ;)

Eléphanteau du PHP | 22 Messages

26 avr. 2006, 14:10

:shock: effectivement, c'était juste ça :shock:

Eh bien merci beaucoup charabia, ça faisait 2 jours que je bloquais :oops:

Une toute dernière chose, je fais comme pour que l'e-mail entré dans le champs "email" devienne l'expéditeur de message ?

Avatar du membre
ViPHP
ViPHP | 3008 Messages

26 avr. 2006, 14:12

C'est avec le FROM. Jettes un oeil ici pour l'utilisation de la fonction mail(). Tu y trouveras ton bonheur ;)

:arrow: http://www.vulgarisation-informatique.com/mail.php

Eléphanteau du PHP | 22 Messages

26 avr. 2006, 14:53

J'ai essayé ceci :

Code : Tout sélectionner

<?php $headers = 'Return-Path: <'.$email.'>'."\n"; $headers .= 'From: "Feedback" <'.$email.'>'."\n"; $email_destinataire .= "[email protected]"; $msg .= $_POST["lastname"]."\n"; $msg .= $_POST["firstname"]."\n"; $msg .= $_POST["address"]."\n"; $msg .= $_POST["country"]."\n"; $msg .= $_POST["phone"]."\n"; $msg .= $_POST["email"]."\n"; $msg .= $_POST["message"]."\n"; if(!mail($email_destinataire, "Karcher RC3000", $msg)) { echo "ERREUR : l'e-mail n'a pas été envoyé"; } Header("Location: index.php"); ?>
Sans succès. Je suppose qu'il y a une erreur :lol:

Avatar du membre
ViPHP
ViPHP | 3008 Messages

26 avr. 2006, 14:58

Rapidement en effet y a des erreurs :lol:

$email est récupéré de quelle façon ? ça ne serait pas plutôt $_POST["email"] ?

Tu déclares $headers, mais dans ta fonction mail je ne la vois nulle part.

Relis bien les exemples fournis sur le site tu verras.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

26 avr. 2006, 15:01

Tu as les balises [ php ] plutôt que

Code : Tout sélectionner

pour entourer le code PHP posté dans tes messages Regarde c'est mieux non ? :) [php] <?php $headers = 'Return-Path: <'.$email.'>'."\n"; $headers .= 'From: "Feedback" <'.$email.'>'."\n"; $email_destinataire .= "[email protected]"; $msg .= $_POST["lastname"]."\n"; $msg .= $_POST["firstname"]."\n"; $msg .= $_POST["address"]."\n"; $msg .= $_POST["country"]."\n"; $msg .= $_POST["phone"]."\n"; $msg .= $_POST["email"]."\n"; $msg .= $_POST["message"]."\n"; if(!mail($email_destinataire, "Karcher RC3000", $msg)) { echo "ERREUR : l'e-mail n'a pas été envoyé"; } Header("Location: index.php"); ?> [/php]
Modifié en dernier par ouckileou le 26 avr. 2006, 16:09, modifié 1 fois.

Eléphanteau du PHP | 22 Messages

26 avr. 2006, 15:08

C'est aussi dur que d'apprendre le suisse-allemand, dont je ne comprends toujours pas un mot :oops:

Je vois qu'il déclare ceci :
$email_expediteur='[email protected]';
Donc je me dis que je devrais mettre ceci :
$email ='$_POST["email"]';
Pour arriver à cela :
<?php
$email ='$_POST["email"]';
$headers .= 'From: "Feedback" <'.$_POST["email"].'>'."\n";
$email_destinataire .= "[email protected]";
$msg .= $_POST["lastname"]."\n";
$msg .= $_POST["firstname"]."\n";
$msg .= $_POST["address"]."\n";
$msg .= $_POST["country"]."\n";
$msg .= $_POST["phone"]."\n";
$msg .= $_POST["email"]."\n";
$msg .= $_POST["message"]."\n";
if(!mail($email_destinataire, "Karcher RC3000", $msg))
{
echo "ERREUR : l'e-mail n'a pas été envoyé";
}
Header("Location: index.php");
?>
Et j'ai comme l'impression que je n'ai toujours rien compris :lol:
Je souhaite savoir si je suis entrain de chercher dans le mauvaise direction :wink:

Effectivement, c'est mieux la balise PHP :D

Avatar du membre
ViPHP
ViPHP | 3008 Messages

26 avr. 2006, 15:15

Tu es sur la bonne voie :)
$email ='$_POST["email"]';
est incorrect. Si tu fais ce genre de déclaration c'est plutôt :
$email = $_POST["email"];
Mais dans ton cas c'est inutile puisque tu l'as mis directement dans le $headers.

Il faut ensuite appeler le $headers dans ta fonction mail().

Le "." après $msg par exemple sert de concaténation, donc pour la première occurence ce n'est pas la peine de le mettre.
<?php 
$headers = "From: ".$_POST["email"]."\n";
$headers .= "Reply-To: ".$_POST["email"]."\n";
$headers .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
$headers .= "Content-Transfer-Encoding: 8bit";
$email_destinataire = "[email protected]"; 
$msg = $_POST["lastname"]."\n"; 
$msg .= $_POST["firstname"]."\n"; 
$msg .= $_POST["address"]."\n"; 
$msg .= $_POST["country"]."\n"; 
$msg .= $_POST["phone"]."\n"; 
$msg .= $_POST["email"]."\n"; 
$msg .= $_POST["message"]."\n"; 
if(!mail($email_destinataire, "Karcher RC3000", $msg,$headers))
{
echo "ERREUR : l'e-mail n'a pas été envoyé"; 
}
Header("Location: index.php"); 
?>

Eléphanteau du PHP | 22 Messages

26 avr. 2006, 15:50

Ok, je comprends le principe maintenant :D

Ca commence enfin à ressembler à quelque chose le PHP, c'est de moins en moins du chinois :D

Et maintenant tout marche, génial, merci beaucoup :wink: