[php] je ne comprends pas pourquoi ca marche

Avec ces codes, rien ne s'écrit. Et si j'enleve les isset, là il ya un message d'erreur... Voici les codes: merci d'avance!

HTML:
<form action="traitement.php" method="post">
<p>
<label>Prénom:<input type="text" name="prenom" size="30"/></label> <br/>
<label>Nom: <input type="text" name="nom" size="30"/></label><br/></p></form>

PHP:
<p>Merci <?php if (isset($_POST['prenom'])) { echo $_POST['prenom']; } ?> <?php if (isset($_POST['nom'])) { echo $_POST['nom']; } ?>!<br/>

4 réponses

  1. tu as bien 2 fichiers séparés ?
    le premier avec le code html et le 2° avec le code php ?
    si ce n'est pas le cas, ça ne peut pas marcher : le php ne peut pas deviner ce qui a été saisi...
    1. oui, oui, 2 fichiers séparés :
      un pour le HTML et un autre pour le php.
    2. Contributeur
      Bonjour,

      Pourrais tu marquer ton message d'erreur s'il te plait (avec exactitude)
    3. @kij_82le message d'erreur est:
      Notice : undefine index: prenom [chemin] line 21
    4. Contributeur
      @kij_82Et si tu remplace :
      <label>Prénom:<input type="text" name="prenom" size="30"/></label> 


      par :
      <label>Prénom:</label><input type="text" name="prenom" size="30"/> 
      


      ca donne quoi ?

      Aussi, renseigne le champ 'id' de tes input avec pour identifiant le name, ex : <input type='text' id='prenom' name='prenom' >

    5. @kij_82Merci, mais non. J'ai fait les 2 changements, mais ca ne change rien..
      je comprends pas!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2. alors :

    - le faire en deux fichiers (pas fforcéments html et php, peuvent être tous deux php) pourquoi pas... c'est plus propre quand il y a beaucoup de code (MVC...) mais sinon c'est carrément pas indispensable !

    - isset($var) teste si la variable $var EXISTE, ça ne teste pas sa valeur !!
    pour tester qu'une variable est vide, tu peux tester comme cela : if( $var == "") {...} c'est la chaine vide. Et en php5, tu peux tester plus proprement encore : if($var == null) {...}

    DONC :

    -c'est tout à fait normal que ton prog plante si tu retires "isset" car l'interpréteur php lit une variable qui n'existe pas (pas déclarée)

    - de plus la balise input n'est pas censée s'imbiquer dans la balise label, qui ne sert d'ailleurs pas à grand chose si tu ne lui associes pas de touche d'accès....

    -pour le cas ou; teste la totalité de tes variables POST :

    forEach($_POST as $key => $value} {
    echo "clé : ".$key." | valeur : ".$value."<br/>";
    }
    1. salut,
      ce bout de code à l'air de marcher. je l'ai copié tel quel, et ca marche : je mets un nom et un prenom, il m'affiche Merci prenom nom ! et si je mets rien il affiche juste Merci ! et j'ai pas d'erreur.
      ton problème est peut-être lié avec ce que tu as écrit plus haut dans ton code (la partie que tu n'as pas montrée).
      bonne continuation.
      1. La fonction 'isset' de Php est un test sur l'existence d'une variable.
        La portion de code suivante signifie :
        -------------------------------
        <?php
        if (isset($_POST['prenom'])) { // Si la variable $_POST['prenom'] existe
        echo $_POST['prenom']; // alors afficher la valeur de $_POST['prenom']
        }
        ?>
        -------------------------------

        Si ça marche sans faire d'erreur, c'est grâce justement à la fonction 'isset' ...
        (Lire le manuel Php de temps en temps ne ferait pas de mal (rtfm comme certains diraient ;) ))