Notice: Undefined variable:

Résolu
Bonjour,
voici mon script qui pose problème :

avant le <head>

<?php

$email_dest = "monemail";

if ($_POST['envoi']) {

$message_remerciement = "Merci";

// E-mail headers:
$headers ="MIME-Version: 1.0 \n";
$headers .="From: weenypub \n";
$headers .="Content-Type: text/html; charset=utf-8 \n";

$subject = "Message de votre site";

$partie_entete = "<html><head>
<meta http-equiv=Content-Type content=text/html; charset=utf-8>
</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
?>

dans le body mon formulaire :

<form action="<?=$PHP_SELF?>" method="post" id="mail_form" 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();
}
?>
</p>
<table width="566" border="0" align="center">
<p align="center"></p>
<tr>
<td><p>Nom</p></td>
<td><input name="champ1" type="text" /></td>
</tr>
<tr>
<td><p>Prénom</p></td>
<td><input name="champ2" type="text" /></td>
</tr>
<tr>
<td><p>E-mail</p></td>
<td><input name="zone_email" type="text" /></td>
</tr>
<tr>
<td valign="top"><p>Message</p></td>
<td><textarea name="zone_texte" cols="50" rows="10"></textarea></td>
</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="Nom" />
<input name="titre_champ2" type="hidden" value="Prénom" />
<input name="titre_email" type="hidden" value="E-mail" />
<input name="titre_zone" type="hidden" value="Message" /></td>
<td><div align="center">
<input name="Reset" type="reset" value="Effacer" />
<input name="envoi" type="submit" value="Envoyer" />
</div></td>
</tr>
</table>
<div align="center"></div>
</form>

Mon problème en haut du site :

Notice: Undefined index: envoi in C:\wamp\www\monsite\contact.php on line 5

et au dessus du formulaire :

Notice: Undefined variable: message_remerciement in C:\wamp\www\monsite\contact.php on line 137

merci d'avance

2 réponses

  1. Salut,

    Si tu pouvais montrer les lignes correspondantes...
    1. Essaie avec if(isset($_POST['envoi'])) { echo $_POST['envoi']; }
      Tu verras si la variable est bien définie.
    2. A la ligne 5 : if ($_POST['envoi']) {
      A la ligne 137 : if ($message_remerciement) {

      merci beaucoup
  2. vous avez déclarer et initialiser la variable message_remerciement dans un bloc IF, elle est donc une variable local, par la suite vous essayez de l'utiliser dans un autre bloc

    mettre $message_remerciement = "Merci"; avant if ($_POST['envoi']) {
    1. Erreur, il veut l'afficher que si le formulaire est rempli, là il sera toujours affiché.
      Avec un if(isset($message_remerciement)), ça ne devrait plus poser de problème !
    2. Je l'ai remonter avant cela m'affiche bien merci ?..
      (compliquer pour moi je débute en php)
    3. Erreur, il veut l'afficher que si le formulaire est rempli, là il sera toujours affiché.
      Avec un if(isset($message_remerciement)), ça ne devrait plus poser de problème !

      J'ai essayé cela fonctionne bien haut dessus du formulaire il n'y a plus le message d'erreur (merci) mais en haut du site toujours le même :
      Notice: Undefined index: envoi in C:\wamp\www\site\contact.php on line 5..
    4. Essaie avec if(isset($_POST['envoi'])) { echo $_POST['envoi']; }
      On dirait que ta variable ne passe pas...
    5. cela m'affiche 6 erreurs :
      Notice: Undefined index: nbre_champs_texte in C.. ..on line 21
      Notice: Undefined index: nbre_zone_email in C.. on line 25
      etc..