Notice: Undefined variable???? [Résolu/Fermé]

Signaler
-
Messages postés
29609
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 septembre 2020
-
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


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']

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>

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"

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>';
?>

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]
Messages postés
29609
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 septembre 2020
2 793
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>';
?>


je teste cela demain.
merci a toi

merci ca fonctionne parfaitement.
Messages postés
29609
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 septembre 2020
2 793 > 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