Formulaire en PHP

Petit nouveau ! | 8 Messages

19 janv. 2011, 12:30

Bonjour tout le monde.
Je rencontre un souci avec un formulaire PHP. 'aimerai remplacer le champ texte "discipline" par 2 boutons d'options et le champ texte "choix de la course" par une liste déroulante proposant plusieurs choix.... Mon plus gros problème n'est pas dans l'installation proprement dite de ces éléments mais dans l'envoi... En effet, les choix vont apparaitre sur ma page internet mais lorsque je reçois les informations (par mail), les séléctions de la liste déroulante et des boutons d'options n'apparaissent pas dans le mail. Comment faire? Voici le code de mon formulaire, l'originale, sans la transformation des zones textes à modifier.
Par avance merci.

<?php

$email_dest = "xxxxx@xxxxx";

if ($_POST['envoi']) {

$message_remerciement = "Votre inscription a bien été enregistrée";

// E-mail headers:
$headers ="MIME-Version: 1.0 \n";
$headers .="From: xxxxx@xxxx \n";
$headers .="Content-Type: text/html; charset=iso-8859-1 \n";

$subject = "Inscription à une course";

$partie_entete = "<html><head>
<meta http-equiv=Content-Type content=text/html; charset=iso-8859-1>
</head>
<body bgcolor=#FFFFFF>";

for ($a=1; $a<= $_POST['nbre_champs_texte']; $a++) {
$partie_champs_texte .= "<font face='Verdana' size='2' color='#003366'>" . $_POST['titre_champ'.$a] . " = " . $_POST['champ'.$a] . "</font><br>";
}

if ($_POST['nbre_zone_email'] != 0) {
$partie_zone_email = "<font face='Verdana' size='2' color='#003366'>" . $_POST['titre_email'] . " = " . $_POST['zone_email'] . "</font><br>";
}

if ($_POST['nbre_zones_texte'] != 0) {
$partie_zone_texte = "<font face='Verdana' size='2' color='#003366'>" . $_POST['titre_zone'] . " = " . $_POST['zone_texte'] . "</font><br>";
$partie_zone_texte = stripslashes($partie_zone_texte);
}

$fin = "</body></html>";

$sortie = $partie_entete . $partie_champs_texte . $partie_zone_email . $partie_zone_texte . $fin;

// Send the e-mail
if (@!mail($email_dest,$subject,$sortie,$headers)) {
echo("Envoi du formulaire impossible");
} // Closing if !mail...

} // Closing if edit
?><html>
<head>
<title>Assistant d'envoi de formulaires</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript"><!-- Hide script from older browsers
function verifSelection() {if (mail_form.champ1.value == "") {
alert("Nom non rempli")
return false
} if (mail_form.champ2.value == "") {
alert("Prénom non rempli")
return false
} if (mail_form.champ3.value == "") {
alert("Discipline non rempli")
return false
} if (mail_form.champ4.value == "") {
alert("Choix de la course non rempli")
return false
} if (mail_form.zone_email.value == "") {
alert("Adresse mail non rempli")
return false
}

invalidChars = " /:,;'"

for (i=0; i<invalidChars.length; i++) { // does it contain any invalid characters?
badChar = invalidChars.charAt(i)

if (mail_form.zone_email.value.indexOf(badChar,0) > -1) {
alert("Votre adresse e-mail contient des caractères invalides. Veuillez vérifier.")
mail_form.zone_email.focus()
return false
}
}

atPos = mail_form.zone_email.value.indexOf("@",1) // there must be one "@" symbol
if (atPos == -1) {
alert('Votre adresse e-mail ne contient pas le signe "@". Veuillez vérifier.')
mail_form.zone_email.focus()
return false
}

if (mail_form.zone_email.value.indexOf("@",atPos+1) != -1) { // and only one "@" symbol
alert('Il ne doit y avoir qu\'un signe "@". Veuillez vérifier.')
mail_form.zone_email.focus()
return false
}

periodPos = mail_form.zone_email.value.indexOf(".",atPos)

if (periodPos == -1) { // and at least one "." after the "@"
alert('Vous avez oublié le point "." après le signe "@". Veuillez vérifier.')
mail_form.zone_email.focus()
return false
}

if (periodPos+3 > mail_form.zone_email.value.length) { // must be at least 2 characters after the
alert('Il doit y avoir au moins deux caractères après le signe ".". Veuillez vérifier.')
mail_form.zone_email.focus()
return false
}} // Fin de la fonction

</script>
</head>

<body>
<form name="mail_form" method="post" action="<?=$PHP_SELF?>" onSubmit="return verifSelection()">
<div align="center"></div>
<p align="center">
<?php
if ($message_remerciement) {
echo("<font face=Verdana size=2>");
echo(stripslashes($message_remerciement));
echo("</p></body></html>");
exit();
}
?>
<table width="566" border="0" align="center">
<p align="center">
</p><tr>
<td><font face="Verdana" size="2">Nom</font></td>
<td><input name="champ1" type="text"></td>
</tr><tr>
<td><font face="Verdana" size="2">Prénom</font></td>
<td><input name="champ2" type="text"></td>
</tr><tr>
<td><font face="Verdana" size="2">Discipline</font></td>
<td><input name="champ3" type="text"></td>
</tr><tr>
<td><font face="Verdana" size="2">Choix de la course</font></td>
<td><input name="champ4" type="text"></td>
</tr><tr>
<td width><font face="Verdana" size="2">Adresse mail</font></td>
<td width><input name="zone_email" type="text"></td>
</tr><tr>
<td valign="top"><input name="nbre_champs_texte" type="hidden" id="nbre_champs_texte" value="4">
<input name="nbre_zones_texte" type="hidden" value="0">
<input name="nbre_zone_email" type="hidden" value="1">
<input name="titre_champ1" type="hidden" value="Nom"><input name="titre_champ2" type="hidden" value="Prénom"><input name="titre_champ3" type="hidden" value="Discipline"><input name="titre_champ4" type="hidden" value="Choix de la course"><input name="titre_email" type="hidden" value="Adresse mail"></td>
<td><div align="center">
<input type="reset" name="Reset" value="Effacer">
<input type="submit" name="envoi" value="Envoyer">
</div></td>
</tr>
</table>
<div align="center"></div>
</form>
</body>
</html>
<body>
<form name="mail_form" method="post" action="<?=$PHP_SELF?>" onSubmit="return verifSelection()">
<div align="center"></div>
<p align="center">
<?php
if ($message_remerciement) {
echo("<font face=Verdana size=2>");
echo(stripslashes($message_remerciement));
echo("</p></body></html>");
exit();
}
?>

ViPHP
ViPHP | 5462 Messages

19 janv. 2011, 12:32

demande à celui qui a crée le code
et utilise la balise php pour partage ton code

Petit nouveau ! | 8 Messages

19 janv. 2011, 12:35

Si j'le pouvais je n'serai pas sur ce forum aujourd'hui.... :|

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

19 janv. 2011, 16:47

Il en faut peu pour être heureux ......

Petit nouveau ! | 8 Messages

20 janv. 2011, 12:20

Merci Moogli, mais ce n'est pas exactement ce que je recherche. Ce qui est expliqué la indique comment récupérer des données que l'utilisateur écrit dans un champ, et non pas celle qu'il sélectionne parmis un choix multiple. :|

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

20 janv. 2011, 23:43

c'est la même chose, après cela dépend du code html

Il faut utiliser une balise select (en choix multiple) avec un nom type tableau et ainsi récupérer les choix saisis.


@+
Il en faut peu pour être heureux ......

cricen
Invité n'ayant pas de compte PHPfrance

24 janv. 2011, 17:54

tu peux essayer quelquechose comme ça:
page de formulaire
<form action="page.php" method="post">
<SELECT name="liste" size="5">
<OPTION value="nom_1" selected>nom_1</option>
<OPTION value="nom_2\">nom_2</option>
<OPTION value="nom_3\">nom_3</option>
...
<OPTION value="nom_n-1\">nom_n-1</option>
<OPTION value="nom_n\">nom_n</option>
</SELECT>
<input type="submit" value="Valider">
</form>


page de récupération (page.php)
@$nom=$_POST['liste'];

**un bon dessin vaut mieux qu'un long discours**

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

24 janv. 2011, 22:59

Modération :
Afin d'améliorer la lisibilité de vos messages,
pensez à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie du message
lorsque vous postez un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...