Bonjour, je cherche depuis des jours comme enlever l'erreur suivante :
Notice: Undefined index: naissance in /var/web/s174064/public_html/exercices/ensemble1/ExA.php on line 24
Notice: Undefined index: sexe in /var/web/s174064/public_html/exercices/ensemble1/ExA.php on line 28
Notice: Undefined index: sexe in /var/web/s174064/public_html/exercices/ensemble1/ExA.php on line 30
Ce n'est qu'à l'ouverture de ma page que cette erreur s'affiche sinon ça fonctionne des que je rentre des données dans le formulaire (Le message d'erreur part en mon formulaire répond normalement)
Mon code:
<html>
<head>
<title>ExA</title>
<link rel="stylesheet" type="text/css" href=""/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>
<form action="ExA.php" method="POST">
<table >
<tr>
<td>Nom</td><td><input type="text" name="nom" autocomplete="on" /></td>
<td>Prénom</td><td><input type="text" name="prénom"/></td>
<td >Date de naissance</td><td><input type="number" name="naissance" /> </td>
</table>
Sexe :
<input type="radio" name="sexe" value="M"/> Homme
<input type="radio" name="sexe" value="F"/> Femme</br></br>
<?php
if ($_POST["naissance"]>(date("Y")-18))
{
echo "Attention, la vente en ligne est uniquement réservée aux membres
majeurs. Nous déclinons toute responsabilité.";
} else if ($_POST["sexe"]=="M") {
echo "Monsier ".$_POST["nom"]." ".$_POST["prénom"]." née en ".$_POST["naissance"];
} else if ($_POST["sexe"]=="F")
{
echo "Madame".$_POST['nom']." ".$_POST["prénom"]." née en ".$_POST["naissance"];
}
?>
<br/><br/>
<input type="submit" value="Envoyer"/>
</form>
</body>
</html>
On m'a dit d'utilisé isset que et que cette erreur apparaît quand y a une variable utilisée qui est pas définie au préalable, qui n'est pas reconnue, ..."
Mais je n'y arrive pas c'est affreux je ne comprends pas pas précisément ce qu'il faut que je fasse j'ai regarder des cas similaire je suis aller sur d'autre forum et vraiment je ne trouve pas. Si quelqu'un pouvait me dire de manière concrète ce que je dois changer à mon code pour qu'il ne m'affiche plus cette erreur je lui en serais très reconnaissant
On m'a dit d'utilisé isset que et que cette erreur apparaît quand y a une variable utilisée qui est pas définie au préalable, qui n'est pas reconnue, ..."
Exact. Qu'avez vous essayez avec cette fonction?
"de manière concrète ce que je dois changer " => voir exemple de la doc.
<html>
<head>
<title>ExA</title>
<link rel="stylesheet" type="text/css" href=""/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>
<form action="ExA.php" method="POST">
<table >
<tr>
<td>Nom</td><td><input type="text" name="nom" autocomplete="on" /></td>
<td>Prénom</td><td><input type="text" name="prénom"/></td>
<td >Date de naissance</td><td><input type="number" name="naissance" /> </td>
</table>
Sexe :
<input type="radio" name="sexe" value="M"/> Homme
<input type="radio" name="sexe" value="F"/> Femme</br></br>
<?php
if (isset($_POST["naissance"])>(date("Y")-18))
{
echo "Attention, la vente en ligne est uniquement réservée aux membres
majeurs. Nous déclinons toute responsabilité.";
} else if (isset($_POST["sexe"])=="M") {
echo "Monsier ".$_POST["nom"]." ".$_POST["prénom"]." née en ".$_POST["naissance"];
} else if (isset($_POST["sexe"])=="F")
{
echo "Madame".$_POST['nom']." ".$_POST["prénom"]." née en ".$_POST["naissance"];
}
?>
<br/><br/>
<input type="submit" value="Envoyer"/>
</form>
</body>
Mon code ne fonctionne plus trop, j'ai aussi tenté ça ;
<html>
<head>
<title>ExA</title>
<link rel="stylesheet" type="text/css" href=""/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>
<form action="ExA.php" method="POST">
<table >
<tr>
<td>Nom</td><td><input type="text" name="nom" autocomplete="on" /></td>
<td>Prénom</td><td><input type="text" name="prénom"/></td>
<td >Date de naissance</td><td><input type="number" name="naissance" /> </td>
</table>
Sexe :
<input type="radio" name="sexe" value="M"/> Homme
<input type="radio" name="sexe" value="F"/> Femme</br></br>
<?php
if (isset($_POST['prénom']) AND isset($_POST['nom']) AND isset($_POST['naissance']) AND isset($_POST['sexe']) )
{
echo '';
}
else
{
echo 'Il faut renseigner vos informations !';
}
if ($_POST["naissance"]>(date("Y")-18))
{
echo "Attention, la vente en ligne est uniquement réservée aux membres
majeurs. Nous déclinons toute responsabilité.";
} else if ($_POST["sexe"]=="M") {
echo "Monsier ".$_POST["nom"]." ".$_POST["prénom"]." née en ".$_POST["naissance"];
} else if ($_POST["sexe"]=="F")
{
echo "Madame".$_POST['nom']." ".$_POST["prénom"]." née en ".$_POST["naissance"];
}
?>
<br/><br/>
<input type="submit" value="Envoyer"/>
</form>
</body>
</html>
J"ai aussi tester avec des fonctions exit() qui m'a été conseillé mais ça enlève mon code
Je comprends théoriquement mais en pratique je comprends pas et le soucis c'est que je sais pas précisément ce que je ne comprends pas je n'arrive même pas à bien m'exprimer sur le sujet. Je ne sais pas s'il faut faire une grosse modification ou rajouter juste une ligne pour que ça fonctionne. J'ai le corriger de mon problème mais le corrigé est fait de manière totalement différent donc j'arrive pas l'incorporer par rapport à mon cas. Bref, je galère
Pour toute variable (tableau, index de tableau, variable "normale") AVANT de l'utiliser il faut vérifier si elle existe => isset() (voir la doc php) permet de le faire et renvoie un booléen => utilisation directe dans un IF
As-tu suivi des cours, je n'ai pas l'impression vu ton explication ou tu les a mal suivi. Revises les.
Il faut revoir les cours d’algorithmique, et si tu n’en a pas suivis il faut en suivre un ou plusieurs.
Que doit faire ton programme ? C’est la première des choses à écrire sur papier. Écrire l’algo, c’est-à-dire dans ce cas je fais ça, dans un autre cas je fais ça etc….
Je recommande de ne pas utiliser l’égalité simple (==) pour la comparaison mais l’égalité strict (===) tu verras qu’il y a une différence.
Revoir les conditions, comment écrit-on un if else ; tu as des erreurs à ce niveau.
Comment cela se passe quand il y a plusieurs condition dans le if() ?
Vraiment il faut relire les cours.
Dans la condition (isset($_POST["naissance"])>(date("Y")-18)) isset renvoi soit true soit false, il ne peut être supérieur à un chiffre !!
Tu aurais sans doute voulu écrire : si la variable naissance existe ET si cette variable est supérieure à …. : Ce qui s’écrit (isset($_POST["naissance"]) && ($_POST["naissance"]) > (date("Y") - 18))
Astuce : observe ce qui ce passe dans les variables en placent ceci avant ton formulaire : var_dump($_POST);
Il faut absolument faire un algo avant de passer au code.
je ^plussoie ce qui a deja été dis par christouphe et abcabc donc je vais rien rajouter a ce sujet et pourtant christouphe que j'ai cotoyé sur plusieurs sujet depuis plusieurs années va savoir que je vais me retenir algo/modélisation de données et organisation du code sur ton soucis donc juste sur cette phrase
Attention, la vente en ligne est uniquement réservée aux membres
majeurs. Nous déclinons toute responsabilité
- si c'est reservé aux membres ==>veuillez vous connecter
majeurs ==*< si membre ont a deja son age
- nous déclinons touts responsabilité ==*< si membre il a accepté les cgu et*cgv
Ah et aussi accessoirement
<?php
if ($_POST["naissance"]>(date("Y")-18))
Si je met 30/12/2002 j'ai 18 ans même si j'en ai que 17 au 07/04/2020 (d'ou l'interet de faire des verif membre plus précise une seul fois aprés si il ment ce n'est pas de ta faute mais la si parce que je n'aurai que 17)
Erreur PHP : Undefined index
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Keep It Simple Stupid - SF4 conf Swift - Cours 1/4 SF4 - Exceptions PDO - Formes Normales