[php] je ne comprends pas pourquoi ca marche
moicjm
-
A.Nonymous -
A.Nonymous -
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/>
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
-
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...-
-
- Et 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' >
-
-
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/>";
} -
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. -
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 ;) ))