Notice: Undefined variable????

Résolu
wonderwoman -  
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Je débute juste en php et je demandais pourquoi j'ai cette erreur quand j'essaye de valider mon formulaire de contact?
j'ai ca en barre d'adresse :
Notice: Undefined variable: civi in /flex/domain/site/www/reservationmerci.php on line 14 et la ligne est celle ci:
Civilité:'.$civi.' <br>

et je recupere mes données comme cela :
<form action="/reservationmerci.php" method="post">
<p><font color="white">
<input type="radio" name="civi" value="Mme" /> Madame
<input type="radio" name="civi" value="Mlle" /> Mademoiselle
<input type="radio" name="civi" value="Mr" /> Monsieur
</p>

merci de votre aide

6 réponses

Utilisateur anonyme
 
Bonjour

Tu as cette erreur parce que comme le dit le message, la variable $civi n'est pas définie.

La variable correspondant au champ de ton formulaire n'est pas $civi, mais $_POST['civi']
0
wonderwoman
 
salut, j'ai corrigé mais j'ai cela maintenant
Parse error: syntax error, unexpected 'civi' (T_STRING)

Voici les informations client .</font></p>
<p>Civilité:$_POST['civi'] Son prenom:$_POST['prenom'] et son nom:$_POST['nom']<br>
0
Utilisateur anonyme
 
Tu ne donnes pas le code, mais je suppose que ce que tu montres est dans une chaîne PHP entre double quotes "
Dans ce cas, tu ne peux pas écrire directement $_POST['civi']. Soit tu écris $_POST[civi] sans apostrophes, soit tu insères tes noms de variables en utilisant la concaténation :
"<p>Civilité:$_POST[civi] Son prenom"

ou
"<p>Civilité:".$_POST['civi']." Son prenom"
0
wonderwoman
 
je te donne ma page car je n'y arrive vraiment pas:

<?php

$messageadmin='<table border=1 cellpadding=0 cellspacing=0 style=\"border-collapse: collapse\" bordercolor=#111111 width=89%>
<tr bgcolor="#9999FF">
<td colspan=4>
<div align="center"><b>Une demande </b></div>
</td>
<tr valign="top" bgcolor="#FFFFFF">
<td colspan=4 style=\"border-left: 1px solid #5188e2border-right:border-top-width: 1border-bottom:padding: 5>
<div align="center">
<p><font face=Verdana size=2>vous avez reçu une demande de renseignement<br>
<br>
Voici les informations client .</font></p>
<p>Civilité:".$_POST['civi']." Son prenom:$_POST['prenom'] et son nom:$_POST['nom']<br>
Son téléphone:$_POST['telephone']<br>
Son email:$_POST['email']<br>
Pour un nombre de :$_POST['nombre'] personne/s <br>
Il voudrait une arrivée le :$_POST['date']<br>
et un départ le : $_POST['date']
Son message:$_POST['message']</font><br>
</p>
</div>
<table width="100%" height="27">
<tr bgcolor="#9999FF" valign="top">
<td><font face=Verdana size=2> </font></td>
</tr>
</table>
<table width=100% cellpadding=2 cellspacing=2 border=0>

</table>
</td>
</tr>
</table>';
?>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
wonderwoman
 
j'ai fais des modifs je n'ai plus d'erreur qui s'affiche mais par contre quand je recois le mail j'ai juste les variables....

mes modifs:
<?php
// Récupération des paramètres POST
$civi = $_POST['civi'];
$prenom = $_POST['prenom'];
$nom = $_POST['nom'];
$telephone = $_POST['telephone'];
$email = $_POST['email'];
$nombre = $_POST['nombre'];
$date1 = $_POST['date1'];
$date2 = $_POST['date2'];
$message = $_POST['message'];

$messageadmin='Civilité:$_POST[civi] Son prenom $_POST[prenom] et son nom: $_POST[nom]<br>
Son téléphone: $_POST[telephone]<br>
Son email: $_POST[email]<br>
Pour un nombre de : $_POST[nombre] personnes <br>
Il voudrait une arrivée le :$_POST[date1]<br>
et un départ le : $_POST[date2]
Son message: $_POST[message]
';
?>


et le mail recu:

Civilité:$_POST[civi] Son prenom $_POST[prenom] et son nom: $_POST[nom]
Son téléphone: $_POST[telephone]
Son email: $_POST[email]
Pour un nombre de : $_POST[nombre] personnes
Il voudrait une arrivée le :$_POST[date1]
et un départ le : $_POST[date2] Son message: $_POST[message]
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,
Dans l'idéal .. on récupère les variables (et on vérifie qu'elles existent via la fonction isset) AVANT de les utiliser...

Un truc du genre :

 <?php

$date = isset($_POST['date'])?$_POST['date']:'';
$prenom = isset($_POST['prenom'])?$_POST['prenom']:'';
$civi = isset($_POST['civi'])?$_POST['civi']:"M.";
$nom=isset($_POST['nom'])?$_POST['nom']:'';
$tel = isset($_POST['telephone'])?$_POST['telephone']:'';
$email = isset($_POST['email'])?$_POST['email']:'';
$nombre = isset($_POST['nombre'])?$_POST['nombre']:1;
$s = $nombre>1 ? "s" : "";
$message = isset($_POST['message'])?$_POST['message']:'';

 $messageadmin='<table border=1 cellpadding=0 cellspacing=0 style=\"border-collapse: collapse\" bordercolor=#111111 width=89%>
  <tr bgcolor="#9999FF">
    <td colspan=4>
      <div align="center"><b>Une demande </b></div>
    </td>
  <tr valign="top" bgcolor="#FFFFFF">
    <td colspan=4 style=\"border-left: 1px solid #5188e2border-right:border-top-width: 1border-bottom:padding: 5>
      <div align="center">
        <p><font face="Verdana" size="2">vous avez reçu une demande de renseignement<br>
          <br>
          Voici les informations client .</font></p>
        <p>Civilité:'.$civi.' Son prenom:'.$prenom.'  et son nom:.'$nom.'<br>
		Son téléphone:'.$tel.'<br> 
		Son email:'.$email.'<br>
        Pour un nombre de :'.$nombre.' personne'.$s.' <br>
        Il voudrait une arrivée le :'.$date.'<br>
        et un départ le : .'$date.'		
		Son message:'.$message.'</font><br>
                </p>
      </div>
      <table width="100%" height="27">
        <tr bgcolor="#9999FF" valign="top">
          <td><font face="Verdana" size="2"> </font></td>
        </tr>
      </table>
      <table width="100%" cellpadding="2" cellspacing="2" border="0">
        
      </table>
    </td>
  </tr>
</table>';
?>

0
wonderwoman
 
je teste cela demain.
merci a toi
0
wonderwoman
 
merci ca fonctionne parfaitement.
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > wonderwoman
 
Si la question est résolue..
Merci de ne pas oublier de clôturer le sujet
(en cliquant sur le lien "Marquer comme résolu" qui se trouve sous le titre de la question)

Cordialement,
Jordane
0