Problème de formulaire (grand débutant)

Blue
Invité n'ayant pas de compte PHPfrance

23 mai 2008, 23:12

Bonjour à tous !

Voilà j'ai plus ou moins l'habitude du html et du css, mais je n'y connais pas grand chose en php. J'ai cependant eu besoin d'y avoir recours pour créer un formulaire, et j'ai donc recherché un code mis à disposition sur le net. J'ai utilisé easyPHP pour tester ma page en local, mais ça ne marche pas, et je ne trouve pas mon erreur.
Est-ce que vous pourriez m'aider ?


Code dans la page en html :

Code : Tout sélectionner

<!--DEBUT CODE FORMULAIRE--> <!-- Ce script a ete developpe par Nadine Gaine. Modifications et ajouts par Daniel Maleville Vous pouvez l'utiliser gratuitement a des fins NON-COMMERCIALES seulement, et le modifier a votre convenance. Trouve sur http://www.toulouse-renaissance.net/c_outils/ --> <form method="post" action="nadform.php" name="AVIS"> <table width="600"> <tr> <td width="35"></td> <td width="565"><br> <h2>Name of the console in a):<br> <input type="text" name="champ1" size="20"></h2><br> <h2>Name of the console in b):<br> <input type="text" name="champ2" size="20"></h2><br> <h2>Name of the console in c):<br> <input type="text" name="champ3" size="20"></h2><br> <h2>What is the feeling created about console a)?</h2> <p><input type="radio" value="Reality" name="champ4"> It is better than reality.<br> <input type="radio" value="Fun" name="champ4"> You can have fun with your friends.<br> <input type="radio" value="Different" name="champ4"> There are lots of different beautiful games. </p><br> <h2>What is the feeling created about console b)?</h2> <p><input type="radio" value="Reality" name="champ5"> It is better than reality.<br> <input type="radio" value="Fun" name="champ5"> You can have fun with your friends.<br> <input type="radio" value="Different" name="champ5"> There are lots of different beautiful games. </p><br> <h2>What is the feeling created about console c)?</h2> <p><input type="radio" value="Reality" name="champ6"> It is better than reality.<br> <input type="radio" value="Fun" name="champ6"> You can have fun with your friends.<br> <input type="radio" value="Different" name="champ6"> There are lots of different beautiful games. </p><br> <h2>Which of these consoles is your favourite?<br> <select name="champ7" size="1"> <option selected value="0">- Choisir - </option> <option value="Reponse5_1">a)</option> <option value="Reponse5_2">b)</option> <option value="Reponse5_3">c)</option> </select></h2><br> <h2>Explain why this console is your favourite in one or two sentences:<br> <textarea rows="4" name="champ8" cols="40"></textarea></h2><br> <h2>Don't forget to write your full name here:<br> <input type="text" name="champ9" size="20"></h2><br><br> <p><input type="submit" value="Send" name="send"><br></p> </td> </tr> </table> </form> <!--FIN CODE FORMULAIRE-->

Code du fichier nadform.php :
<!-- DEBUT DU SCRIPT nadform.php-->
<html>
<head>

</head>
<body>
<?
/* Ce script a été développé par Nadine Gaine.
Modifications et ajouts par Daniel Maleville
Vous pouvez l'utiliser gratuitement à des fins NON-COMMERCIALES seulement, et le modifier à votre convenance.
Trouvé sur http://www.toulouse-renaissance.net/c_outils/
*/
//
// DEBUT Fonction de contrôle du mail PHP-UNIX
function check_mail($champ4) { 
if( (preg_match('/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/', $champ4)) || 
(preg_match('/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/',$champ4)) ) { 
$host = explode('@', $champ4);
if(checkdnsrr($host[1].'.', 'MX') ) return true;
if(checkdnsrr($host[1].'.', 'A') ) return true;
if(checkdnsrr($host[1].'.', 'CNAME') ) return true;
}
return false;
}
// FIN Fonction de contrôle du mail
$MailTo = "[email protected]"; //adresse à laquelle sera envoyé le contenu du formulaire
$MailCc = ""; // adresse à laquelle sera envoyé un communiqué
$MailSubject = "Video games form"; //texte qui va figurer dans le champ "sujet" du email
$MailHeader = "From: [email protected]"; //adresse email qui va figurer dans le champ "expéditeur" du email et qui peut être remplacé par la variable "$champx" ("$champ3").
// Quelques hébergeurs obligent que le domaine du mail de l'expéditeur soit celui de votre site 

$min_size="3"; // Longueur minimum du message
$max_size="5000"; //Longueur maximum du message

/* 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

/* Pour enlever une condition de vérification de champ (vide ou non), enlever, par exemple au champ 1 :
* 
if ($champ1 == ""){ //nom du champ1
echo("Vous n'avez pas complété le champ 1.<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 {
}

et ne laisser que :

$MailBody .= "Question 1 : $champ1\n";

*/ 
//
if ($champ1 == ""){ //nom du champ1
echo("You haven't named console a)."); //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 .= "Question 1 : $champ1\n"; //si le champ1 contient de l'information, elle est stockée dans la variable MailBody
}
if ($champ2 == ""){
echo("You haven't named console b).");
$Envoi = 0;
}
else {
$MailBody .= "Question 2 : $champ2\n";
}
if ($champ3 == ""){
echo("You haven't named console c).");
$Envoi = 0;
}
else {
$MailBody .= "Question 3 : $champ3\n";
}
if ($champ4 == ""){
echo("You haven't chosen the feeling created in a).");
$Envoi = 0;
}
else {
$MailBody .= "Question 4 : $champ4\n";
}
if ($champ5 == ""){
echo("You haven't chosen the feeling created in b).");
$Envoi = 0;
}
else {
$MailBody .= "Question 5 : $champ5\n";
}
if ($champ6 == ""){
echo("You haven't chosen the feeling created in c).");
$Envoi = 0;
}
else {
$MailBody .= "Question 6 : $champ6\n";
}
if ($champ7 == "0"){
echo("You haven't chosen your favourite console.");
$Envoi = 0;
}
else {
$MailBody .= "Question 7 : $champ7\n";
}
if ($champ8 == ""){
echo("You haven't explained why it's your favourite console.");
$Envoi = 0;
}
elseif (strlen($champ8) <= $min_size) {
echo("Your answer is too short.");
$Envoi = 0;
}
elseif (strlen($champ8) >= $max_size) {
echo("Your answer is too long.");
$Envoi = 0;
}
else {
$affich_champ8 = htmlentities($champ8); // affiche le code HTML à l'état brut. 
$affich_champ8 = StripSlashes($affich_champ8); // enlève, au texte affiché, les \ aux apostrophes, exemple : l\'habitude
$envoi_champ8 = StripSlashes($champ8); // enlève les \ aux apostrophes, exemple : l\'habitude
$MailBody .= "Votre texte : $envoi_champ8\n";
}
if ($champ9 == ""){ //nom du champ9
echo("You haven't written your name."); //message qui s'affiche si le visiteur n'a pas rempli ce champ
$Envoi = 0; //si le champ9 n'a pas été rempli, la variable envoi prend la valeur de 0
}
else {
$MailBody .= "Question 9 : $champ9\n"; //si le champ1 contient de l'information, elle est stockée dans la variable MailBody
}

//Envoi du message
if ($Envoi == 1) { //vérification que la variable envoi est bien à 1
echo("<p><strong>Name : <font color=\"#0000FF\">$champ9</font>\n");
echo("<p>&nbsp;</p>");
mail($MailTo, $MailSubject, $MailBody, $MailHeader); //envoi du message
//mail($MailCc, $MailSubject, $MailBody, $MailHeader); //envoi du communiqué (enlever // pour le rendre opérationnel
echo("<p>Your answers have been sent.<br />Thank you for filling this form."); 
echo("<p>&nbsp;</p><p>&nbsp;</p><p align=\"center\"><a href=\"videogames.htm\">Go back</strong></a></p>"); //affichage d'un message de confirmation.
}
?>
</body>
</html>
<!-- FIN DU SCRIPT nadform.php-->
Merci d'avance pour votre aide ! :)

Petit nouveau ! | 9 Messages

24 mai 2008, 01:55

Utilise WAMPS
http://www.wampserver.com/
pour commencer car easy php il faut configurer le le php.ini en clair c'est pas simple bon courage par la suite..

Mammouth du PHP | 881 Messages

24 mai 2008, 06:44

Tu pourrais nous mettre sur la piste en décrivant la situation erronée à laquelle tu arrives ou les messages d'erreur reçus ou encore en comparant le résultat attendu avec le résultat obtenu.
Comme c'est là, il faut se taper tous les tests pour t'aider.


Tes balises <? et ?> devraient être <?php et ?>

Déjà là, ça t'aidera.

Ensuite, ton formulaire est un POST, il faut donc récupérer la valeur des champs dans le tableau POST. On fait cela ainsi:
if ($_POST["champ1"] == "") { //nom du champ1  blabla
Corrige ton code avec ces éléments et reviens-nous avec des détails.
Soyez artisans de paix

Blue
Invité n'ayant pas de compte PHPfrance

24 mai 2008, 15:30

Ha mince, désolée de ne pas avoir mis plus d'infos.

Ceci dit merci à vous deux.

Je me débrouille beaucoup mieux de WAMPSERVER que d'easyPHP ^^

Et puis surtout mon formulaire fonctionne très bien maintenant que j'ai ajouté tes modifications, Patriboom. Donc au final je n'ai plus de problème à décrire ^^

Problème réglé donc !

Mammouth du PHP | 881 Messages

24 mai 2008, 18:06

Veuille bien mettre "Résolu" à ton fil.
Soyez artisans de paix