Bonjour,
Je rencontre un problème avec mon code. Mon professeur nous a donnée la consigne de réaliser un formulaire qui permet de récupérer les informations entrer par l'utilisateur et de les afficher mais aussi de bloquer dans le cas ou l'un des champ n'est pas rempli et de mémoriser les choix précédents de l'utilisateur. J'ai, donc, écrit ce code :
<html>
<head>
<meta charset="utf-8">
<title>TD1</title>
<body>
<?php
if (!isset($_POST['Nom']) && !isset($_POST['Prenom'])){
echo "<FORM action='affiche.php' method='POST'> ";
echo " Nom : <INPUT type='TEXT' name='Nom' size=10 value='" . $_POST['Nom'] . "'> ";
echo " Prenom : <INPUT type='TEXT' name='Prenom' size=10 value='" . $_POST['Prenom'] . "'> ";
echo "<INPUT type='SUBMIT' value='et hop!'> ";
echo "</FORM>";}
else {
if (!empty($_POST['Nom']) && !empty($_POST['Prenom']))
{
echo '<h3>Informations récupérées en utilisant POST</h3>';
echo 'Nom : ' . $_POST['Nom'] . ' Prenom : ' . $_POST['Prenom'] ;
}
else
header('location: /affiche.php');}
?>
</body>
</html>
Ce que je veux
Je ne sais pas ce qui cloche, mais j'ai besoin de votre aide. J'aimerai savoir ce qui empeche mon code fonctionner pour la mémorisation du choix de l'utilisateur.
Ce que j'obtiens
Chaque fois que j'éxécute le code, les deux messages d'erreur suivant, s'affichent :
Warning: Undefined array key "Nom" in C:\xampp\htdocs\affiche.php on line 10
Warning: Undefined array key "Prenom" in C:\xampp\htdocs\affiche.php on line 11
du coup c'est faux !
le $name avant le ; n'est jamais déclaré.
a la place de ce dernier, il faudrait le remplacer par ""
Salut.
Le formulaire est également répété. Autant déterminer les valeurs de nom et prénom au début puis afficher le formulaire une seule fois :
<?php
$lastname = '';
$firstname = '';
if (!empty($_POST['lastname'])) {
$lastname = $_POST['lastname'];
}
if (!empty($_POST['firstname'])) {
$firstname = $_POST['firstname'];
}
// pas besoin de faire des echo pour afficher du HTML
?>
<form action="affiche.php" method="post">
Nom : <input type="text" name="lastname" size="10" value="<?=$lastname;?>"><br>
Prénom : <input type="text" name="firstname" size="10" value="<?=$firstname;?>"><br>
<input type="submit" value="Et hop!">
</form>
Bonsoir,
Lors du 1er chargement de la page, $_POST n'existe pas donc tu ne peux afficher leurs valeurs dans tes inputs
renseigne-toi sur les "conditions ternaires"
autre chose, la fonction "header" ne doit JAMAIS être précédé de html. Dans l'état actuel, elle va forcément planté une fois le code en ligne
Hello :)
Alors dans ton code tu vérifies si il existe un post "Nom", si ça n'existe pas, alors tu ajoutes un formulaire en mettant en value... Le post "Nom" qui n'existe pas, du coup ça marche pas xD
Après si c'est pour gérer le fait que quand le nom existe mais pas le prénom, tu doit ajouter une valeur par défault:
echo " Nom : <INPUT type='TEXT' name='Nom' size=10 value='" . $_POST['Nom'] ?? '' . "'> ";
echo " Prenom : <INPUT type='TEXT' name='Prenom' size=10 value='" . $_POST['Prenom'] ?? '' . "'> ";
$_POST['Nom'] ?? ''
va essayer de récupérer le post "Nom", si il n'existe pas il va mettre la valeur par défaut placé après le ??
qui est une chaine vide ''
Ah et tu as oublié de fermer ta balise </head>
avant d'ouvrir <body>
Bonjour Carouge10 et popette, tout d'abord, merci pour vos retour à tout les deux.
Alors, En ce qui concerne les conditions ternaires, c'est une structure que ne peux pas adoptée. Ce format avec les if, else nous a été imposée. On ne peux pas utiliser autre chose. Sans compter que je viens tout juste de commencer en php. Je suis désolée. Ensuite, pour le header, que voulez vous dire par ne pas précédée? Est ce que je dois complètement l'enlever ? Si oui, avez-vous une alternative à me proposer svp?
J'ai aussi, essayé, l'alternative que vous avez proposez, popotte, mais le problème demeure à chaque fois le même. Je vous fait, un copier coller, des messages d'erreur afficher à la place :
Warning: Undefined array key "Nom" in C:\xampp\htdocs\affiche.php on line 10
<br /><b>Warning</b>: Undefined array key "Prenom" in <b>C:\xampp\htdocs\affiche.php</b> on line <b>11</b><br /> Prenom : <INPUT type=
Sinon, la balise head a été refermée. Je n'avais pas remarquée. Merciii :)
pour le header, il doit être mis avant le html.
vu que tu n'as pas le droit au ternaire, il va te falloir utiliser la structure elseif
si le formulaire est rempli mais que j'ai une erreur alors je l'affiche avec ses précédents données
sinon si le formulaire n'existe pas, je l'affiche
sinon je traite le formulaire
Ah bah si tu n'as pas le droit aux ternaires (sérieux? le ternaire ça a pour seul but de rendre le code plus lisible, tu transmettra à la personne qui te la imposéé que c'est idiot, forcer à ignorer des features pour "suivre le programme qui date de l'époque de php4 quand les ternaires ça n'existait pas", c'est mon coup de gueule du jour ^^) tu devra faire des if sans ternaires x)
echo " Nom : <INPUT type='TEXT' name='Nom' size=10 value='" . if(isset($_POST['Nom']) { $_POST['Nom'] } else { '' } . "'> ";
echo " Prenom : <INPUT type='TEXT' name='Prenom' size=10 value='" . if(isset($_POST['Prenom']) { $_POST['Prenom'] } else { '' } . "'> ";
J'ai tenter de changer l'ordre de mon code, Carouge 10. Mais le même problème persiste, c'est toujours Array key qui s'affiche et qui demande c'est quoi Nom et Prénom.
J'ai copier coller littéralement, les lignes de codes que vous m'avez envoyer popotte. Voici le message afficher :
Parse error: syntax error, unexpected token "if" in C:\xampp\htdocs\affiche.php on line 10
Il n'a pas l'air d'accepter le IF.
pour le if de popotte, il manque la parenthèse fermante du if
si tu utilises un éditeur de code, il devrait te le signaler
J'ai rajouter la paranthèse (si c'est bien à cette endroit)
echo " Nom : <INPUT type='TEXT' name='Nom' size=10 value='" . if (isset($_POST['Nom'])) { $_POST['Nom'] } else { '' }. "'> ";
echo " Prenom : <INPUT type='TEXT' name='Prenom' size=10 value='" . if (isset($_POST['Prenom']) { $_POST['Prenom'] }) else { '' } . "'> ";
Mais le même message d'erreur s'affiche : syntax error, unexpected 'if' (T_IF)
Oops ^^' ouai j'ai écris trop vite, comme caroube a dit faut fermer la parenthèse if
, la y a que la parenthèse isset
qui est fermée ^^'
echo " Nom : <INPUT type='TEXT' name='Nom' size=10 value='" . if (isset($_POST['Nom'])) { $_POST['Nom']; }. "'> ";
echo " Prenom : <INPUT type='TEXT' name='Prenom' size=10 value='" . if (isset($_POST['Prenom'])) { $_POST['Prenom']; }. "'> ";
hahahaha, le problème est toujours le même :)
Désolé.
Parse error: syntax error, unexpected token "if" in C:\xampp\htdocs\affiche.php on line 10
Au final, j'ai trouver la solution. Merci pour votre aide à tout les deux. Je vous envoie, tout de même, une copie du code pour que vous voyez à quoi cela ressemble.
<html>
<head>
<meta charset="UTF-8">
<title>TD1</title>
</head>
<body>
<?php
if (!isset($_POST['Nom']) && !isset($_POST['Prenom'])) {
echo "<FORM action='affiche.php' method='POST'>";
echo " Nom : <INPUT type='TEXT' name='Nom' size=10 value=''>";
echo " Prenom : <INPUT type='TEXT' name='Prenom' size=10 value='' >";
echo "<INPUT type='SUBMIT' value='et hop!'>";
echo "</FORM>";
} else {
if (!empty($_POST['Nom']) && !empty($_POST['Prenom'])) {
echo '<h3>Informations récupérées en utilisant POST</h3>';
echo 'Nom : ' . $_POST['Nom'] . ' <br> Prenom : ' . $_POST['Prenom'];
} else {
$name = isset($_POST['Nom']) ? $_POST['Nom'] : $name ;
$prenom = isset($_POST['Prenom']) ? $_POST['Prenom'] : $prenom ;
echo "<FORM action='affiche.php' method='POST'>";
echo " Nom : <INPUT type='TEXT' name='Nom' size=10 value='". $name ."'>";
echo " Prenom : <INPUT type='TEXT' name='Prenom' size=10 value='". $prenom ."' >";
echo "<INPUT type='SUBMIT' value='et hop!'>";
echo "</FORM>";
}
}
?>
</body>
</html>
Voila. Je ne vous souhaite que du bien et merci encore :)
Bonne soirée à vous.