Page 1 sur 1

Formulaire php...petite erreur à réparer...

Posté : 25 avr. 2005, 18:27
par pook's
j'ai un code php pour un formulaire...
il fonctionne très bien...
mais
dans le mail que je reçois quand j'envoie le formulaire, je reçois toutes les réponses sauf une: celle du menu déroulant.

quelqu'un peut m'aider? merci!!!

Posté : 25 avr. 2005, 18:28
par Cyrano
Montre nous la partie traitement du code. Vérifie aussi que tu initialises bien la variable correspondant au champ manquant.

Posté : 25 avr. 2005, 18:31
par pook's
j'y connais absolument rien en php...

voilà le code...

mais merci d'avance :D

<?php

$email_dest = "[email protected]";

if ($_POST['envoi']) {

$message_remerciement = "Nous vous remercions de vous être inscrit sur ... Nous visiterons votre site dans les plus brefs délais et l\'inscrirons sur l\'annuaire s\'il correspond réellement au sujet. Cordialement, l\'équipe de ...";

// E-mail headers:
$headers ="MIME-Version: 1.0 \n";
$headers .="From: [email protected] \n";
$headers .="Content-Type: text/html; charset=iso-8859-1 \n";

$subject = "Inscription à l\'annuaire";

$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("Veuillez remplir ce champ")
return false
} if (mail_form.champ2.value == "") {
alert("Veuillez remplir ce champ")
return false
} if (mail_form.zone_email.value == "") {
alert("Veuillez remplir ce champ")
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
}if (mail_form.zone_texte.value == "") {
alert("Veuillez remplir ce champ")
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">Titre du site</font></td>
<td><input name="champ1" type="text"></td>
</tr><tr>
<td><font face="Verdana" size="2">Url du site</font></td>
<td><input name="champ2" type="text"></td>
</tr><tr>
<td width><font face="Verdana" size="2">Votre e-mail</font></td>
<td width><input name="zone_email" type="text"></td>
</tr><tr>
<td valign="top"><font face="Verdana" size="2">Description du site</font></td>
<td><textarea name="zone_texte" cols="50" rows="10"></textarea></td>
</tr><tr>
<td valign="top"><font face="Verdana" size="2">Rubrique</font></td>
<td>
<select name="rubrique">
<option value=" Formation1">Formation, aide scolaire : toutes branches confondues</option>
<option value=" Formation2">Formation, aide scolaire : langues : français</option>
<option value=" Formation3">Formation, aide scolaire : langues : anglais</option>
<option value=" Formation4">Formation, aide scolaire : langues : néerlandais</option>
<option value=" Formation5">Formation, aide scolaire : langues : espagnol</option>
<option value=" Formation6">Formation, aide scolaire : langues : allemand</option>
<option value=" Formation7">Formation, aide scolaire : langues : autre</option>
<option value=" Formation8">Formation, aide scolaire : sciences</option>
<option value=" Formation9">Formation, aide scolaire : histoire</option>
<option value=" Formation10">Formation, aide scolaire : géographie</option>
<option value=" Formation11">Formation, aide scolaire : mathématiques</option>
<option value=" Formation12">Formation, aide scolaire : autres</option>
<option value=" projets">Projets pédagogiques</option>
<option value=" dico">Dictionnaires, encyclopédies</option>
<option value=" bac">Bac</option>
<option value=" bib">Bibliothèques</option>
<option value=" trad">Traductions</option>
<option value=" corr">Corrigés</option>
<option value=" autres">Autres</option>
</select>
</tr><tr>
<td valign="top"><input name="nbre_champs_texte" type="hidden" id="nbre_champs_texte" value="2">
<input name="nbre_zones_texte" type="hidden" value="1">
<input name="nbre_zone_email" type="hidden" value="1">
<input name="titre_champ1" type="hidden" value="Titre du site"><input name="titre_champ2" type="hidden" value="Url du site"><input name="titre_email" type="hidden" value="Votre e-mail"><input name="titre_zone" type="hidden" value="Description du site"></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>

Posté : 25 avr. 2005, 18:31
par pjl
Va va pas Cyrano de demander le code.

Après tout le monde va le voir.

Un peu de courage que diable, passe un coup de chiffonnette sur ta boule de cristal et le code apparaitra.

Posté : 25 avr. 2005, 18:34
par Cyrano
Va va pas Cyrano de demander le code.

Après tout le monde va le voir.

Un peu de courage que diable, passe un coup de chiffonnette sur ta boule de cristal et le code apparaitra.
Damned, c'est vrai, j'avais oublié ma boule de cristal :langue:

Posté : 25 avr. 2005, 18:53
par Cyrano
Bon, la réponse, telle que je l'imaginais: le champ de sélection n'est pas récupéré, donc pas envoyé. Plutôt que des pages d'explication, voilà le code PHP réparé, à toi d'arranger la mise en page de l'ajout.
<?php

$email_dest = "[email protected]";

if ($_POST['envoi'])
{
    $message_remerciement = "Nous vous remercions de vous être inscrit sur ... Nous visiterons votre site dans les plus brefs délais et l\'inscrirons sur l\'annuaire s\'il correspond réellement au sujet. Cordialement, l\'équipe de ...";

    // E-mail headers:
    $headers ="MIME-Version: 1.0 \n";
    $headers .="From: [email protected] \n";
    $headers .="Content-Type: text/html; charset=iso-8859-1 \n";

    $subject = "Inscription à l\'annuaire";

    $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);
    }
    $partie_zone_choix = "<font face='Verdana' size='2' color='#003366'>Rubrique : " . $_POST['rubrique'] . "</font>";

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

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

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

} // Closing if edit
?>
Attention, je n'ai recopié que la partie PHP du haut, à toi de remettre le HTML et je JavaScript comme ils étaient avant.

Posté : 25 avr. 2005, 19:00
par pooketteuh
merci merci merci!!! :D

Posté : 25 avr. 2005, 19:10
par Cyrano
Pas de quoi ;)

Posté : 25 avr. 2005, 19:14
par pooketteuh
c'est juste agréable de recevoir des réponses rapidement...
il ne me reste plus qu'à essayer de comprendre comment tout ça fonctionne :$ lol

Posté : 26 avr. 2005, 11:36
par seayoung
Cyrano t'ai vraiment géniale !!!!
pooketteuh si tu veux un site explicatif pour commencer le php je te conseil sans aucune hésitation

www.siteduzero.com

c'est vraiment tres bien fait et bien expliqué