Notice: Undefined variable????

Résolu
wonderwoman -  
jordane45 Messages postés 30426 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

  1. 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
  2. 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
  3. 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
  4. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. 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
  7. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    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
    1. wonderwoman
       
      je teste cela demain.
      merci a toi
      0
    2. wonderwoman
       
      merci ca fonctionne parfaitement.
      0
      1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > 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