SOS, je vais devenir dingue !

Petit nouveau ! | 8 Messages

23 août 2007, 09:46

Bonjour à toutes et à tous !
Je crois que je vais devenir fou !
Certes, je ne suis pas informaticien du tout, mais j'ai déjà fait (il y a longtemps, hélas et j'ai oublié des choses, probablement) pour un premier site à moi (en ligne depuis 1998, j'ai dû faire ça vers 2001) des pages d'envoi de formulaire, une en html, l'autre en php.
J'avais même fait mieux (ou pire), un tableau en pho que je mettais à jour toutes les semaines à peu près.
Jusqu'ici tout va bien.
Fort (?) de cette expérience, je suis en train de faire la même chose pour un second site - fort heureusement encore non lancé.
Je souhaite faire une enquête pour savoir précisément ce que désirent les personnes qui iront sur ce site. J'ai donc préparé une page de formulaire (Enq.html) avec au début

Code : Tout sélectionner

<form action="Enq.php" method="post" name="envoi">
Jusqu'ici tout va encore bien.
J'ai préparé une seconde page, Enq.php, qui commence donc pas le <?php
nécessaire et se termine par
} else {
echo "Erreur de transfert";
}
Jusqu'ici, tout va encore très bien.
Où ça se complique, c'est quand j'appuie sur «Envoyer».
Il me manque :
  1. la qualité (Mlle, Mme ou M.)
  2. le complément d'adresse (alors que j'ai tout le reste : prénom, nom, adresse, code postal et ville)
  3. en fait toute mon enquête (réponse par case à cocher), ce qui est dur dur !
SOS, je ne sais plus quoi faire !
Si quelqu'un peut m'aider...
à vot'bon coeur, M'sieurs-dames !

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

23 août 2007, 09:49

Alors, tout d'abord, bienvenu sur PHPFrance.

Ensuite, aux choses sérieuses ;)
- Essaye d'aérer ton message et d'utiliser les balises

Code : Tout sélectionner

et [php] pour la lisibilité - Merci de mettre un titre clair, parce que là, il ne défini en rien ton problème - Décrit un peu plus le soucis et un peu moins le contexte global ... parce que là, j'avoue ne pas trop avoir compris ton problème Si ton problème est, comme il me semble l'avoir compris, que la validation de ton formulaire ne fonctionne pas, il nous faut le code PHP de validation, celui qui détermine si tu doit passer dans le else ou non ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Invité
Invité n'ayant pas de compte PHPfrance

23 août 2007, 10:56

Bonjour et merci de ta réponse.

C'est vrai que j'aurais dû aérer un peu plus, mais bon, c'est fait maintenant :wink:

Le problème est que, lorsque j'envoie le formulaire au cours de mes multiples essais, j'obtiens
1 - l'identité de la personne (sauf le complément d'adresse et là je ne comprend pas, puisque c'est la même formulation que pour l'adresse et que je l'ai)

2 - des titres que j'ai mis

3 - le commentaire que j'ai placé en fin de formulaire

et c'est tout !

J'ignore ce qu'est le code PHP de validation, mais je sais que j'ai ce que je viens d'indiquer dans mon email (donc de ce côté là tout fonctionne) et que ceux qui viennent s'inscrire sont bien redirigés vers la page de remerciement.

J'ai pensé tout à l'heure que cela pouvait provenir des cases à cocher, puisque tout ce qui me manque (à l'exception du complément d'adresse) est justement constitué par des cases à cocher.

Voici deux exemples pris dans ma page html :

1 - le premier (il est possible qu'il y ait une faute, je l'ai refait au moins dix fois) :
<td width="334"><font color="#000000" size="3" face="Bodoni SvtyTwo ITC TT"><b>Mademoiselle
<input name="qualite" value="Mlle" type="checkbox">
conduit à ceci (dans la page en php) :
$qualite = $_POST['Mlle'];
avec, plus bas, ceci :
'.$qualite.'
et, entre les deux :
$myemail = "info@l....";
$contactname = "Enquete l....";
$contactemail = "info@l....";
$message ='
2 - le second :
<tr bordercolor="#990000" bgcolor="#CCFFFF">
<td> <strong>trouver un hotel, un spa, un golf</strong></td>
<td><div align="center"><font size="3" face="Bodoni SvtyTwo ITC TT">
<input name="Hebergement" type="checkbox" id="Heb" value="Oui">
</font></div></td>
</tr>
conduit à ceci (dans la page en php) :
$heb = $_POST['Heb'];
$ouiheb = $_POST['Oui'];
avec, toujours plus bas, ceci :
'.$heb.'
'.$ouiheb.'
la fin de ma page, après le ; étant :
$subject = 'Enquête du '. date("d-m-Y");
$headers = "MIME-Version: 1.0";
$headers .= "Content-type: text/html; charset=iso-8859-1";
$headers .= "From: info@l...";
$result = mail($contactemail, $subject, $message, $headers);
if ($result) {
header( 'Location: http://www.l....html');
} else {
echo "Erreur de transfert";
}
?>
Voilà.

Je ne sais plus quoi faire (j'ai ôté, remis les ouietc., ça n'a rien changé.
Je ne vois franchement pas et comme je suis là-dessus depuis 4 h ce matin, je n'ai plus l'esprit très clair !

Si tu as une solution, merci d'avance !

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

23 août 2007, 11:05

Ce sont les noms des champs qui font les index des variables $_POST ou $_GET, pas leurs id :
<input name="qualite" value="Mlle" type="checkbox">
<input name="Hebergement" type="checkbox" id="Heb" value="Oui">
$qualite = $_POST['qualite'];
$heb = $_POST['Hebergement'];
A noter que $_POST['qualite'] ne sera définie que si la case est cochée. Tu peux utiliser isSet() pour vérifier qu'une variable est définie ou non
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 8 Messages

23 août 2007, 11:42

Merci !

Avec ça , j'ai résolu une grosse partie du problème.

Je m'attaque maintenant aux "Oui"