Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur PHP : Undefined index

    6 avril 2020 à 22:19:35

    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

    Merci d'avance  

    • Partager sur Facebook
    • Partager sur Twitter
      6 avril 2020 à 23:39:58

      MarwanDango a écrit:

      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.

      Que ne comprenez vous pas après la lecture du cours, la documentation isset()   ici et   la

      PS : Évite les caractères accentuer dans les noms de variable/index des tableaux.

       

      • Partager sur Facebook
      • Partager sur Twitter
        7 avril 2020 à 14:38:06

        Ben j'ai tenter ç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["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 :(



        -
        Edité par WanFive 7 avril 2020 à 14:47:25

        • Partager sur Facebook
        • Partager sur Twitter
          7 avril 2020 à 14:49:34

          Salut,

          pour faire simple:

          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.

          • Partager sur Facebook
          • Partager sur Twitter
            7 avril 2020 à 15:51:39

            Bonjour, il y a beaucoup à dire… trop.

            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.

            • Partager sur Facebook
            • Partager sur Twitter
              7 avril 2020 à 19:04:59

              bonjours,

              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)

              • Partager sur Facebook
              • Partager sur Twitter

              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.
              • Editeur
              • Markdown