Undefined index

Résolu
J'ai un terrible problème avec "Undefined index" pour un formulaire d'inscription, malgré de nombreuses recherches et d'essai de nombreuses solutions je n'y arrive toujours pas, pouvez vous m'aider s'il vous plait ?

Erreur:
Notice: Undefined index: Kilometre in E:\EasyPHP-DevServer-14.1VC11\data\localweb\my portable files\pjtloueur2.php on line 17

Notice: Undefined index: places in E:\EasyPHP-DevServer-14.1VC11\data\localweb\my portable files\pjtloueur2.php on line 19

Notice: Undefined index: Boîte in E:\EasyPHP-DevServer-14.1VC11\data\localweb\my portable files\pjtloueur2.php on line 23
L'insertion a été correctement effectuée


Code:
<?php
  //connection au serveur
  $cnx = mysqli_connect( "localhost", "root", "" ) ;
 
  //sélection de la base de données:
  $db  = mysqli_select_db( $cnx, "desilux" ) ;
   //récupération des valeurs des champs:
   //Marque:
  $Marque = $_POST["Marque"] ;
   //Modèle:
  $Modele = $_POST["Modèle"] ;
   //Catégorie:
  $Categorie = $_POST["Catégorie"] ;
   //Année:
  $Annee = $_POST["Année"] ;
   //Kilometrage:
  $Kilometrage = $_POST['Kilometrage'] ;
   //Nbplaces:
  $Nbplaces = $_POST['Nombre de places'] ;
   //Carburant:
  $Carburant = $_POST["Carburant"] ;
   //Boîte de vitesse:
  $Boitevitesse = $_POST['Boîte de vitesse'] ;
   //création de la requête SQL:
  $sql = "INSERT  INTO voiture (Marque, Modele, Serie, Annee, NbKM, Nbplace, Type, BoiteV)
            VALUES ( '$Marque', '$Modele', '$Categorie','$Annee','$Kilometrage','$Nbplaces','$Carburant','$Boitevitesse')"  ;

   //exécution de la requête SQL:
  $requete = mysqli_query($cnx, $sql) or die( mysqli_error($cnx) ) ;
 
   //affichage des résultats, pour savoir si l'insertion a marchée:
  if($requete)
  {
    echo ("L'insertion a été correctement effectuée");
  }
  else
  {
   echo ("L'insertion à êchouée") ;
  }
?>


EDIT : Ajout des balises de code. (la coloration syntaxique )
Explication disponible ici : https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

Merci d'y penser à l'avenir.

2 réponses

  1. Modérateur
    Bonjour,

    Comme le dit Syrine, il faut en effet s'assurer que tes variables existent via la fonction isset ( ou !empty) .
    Par contre, pour éviter d'écrire des IF / ELSE ... ... tu peux plus simplement utiliser l'écriture TERNAIRE.

    Comme ceci :
      $Marque = isset( $_POST["Marque"]) ?  $_POST["Marque"] : NULL ;
       //Modèle:
      $Modele = isset($_POST["Modele"] ) ? $_POST["Modele"]  : NULL;
    
    

    NB: NE PAS UTILISER D'ACCENTS dans les noms de tes variables (que ce soit en PHP ou dans les attributs NAME de tes éléments HTML !! )
    => $_POST["Modèle"] devient donc : $_POST["Modele"]
    et ton élément html
    <input name='Modele' ...> 
    

    (idem si c'est un <select> ou n'importe quel autre élément html ! )

    ==> Idem pour "Catégorie" , "Année" ....

    De plus .... ne pas utiliser d'ESPACES (ni de caractères spéciaux) dans des noms de variables ou des attributs html :
    'Nombre de places' devrait plutôt être 'Nombre_de_places'
    1. Merci beaucoup ! ça fonctionne parfaitement :) !
  2. Undefined index->ce la veux dire qu'il ne sait pas si la paramètre(vos champs html) existe ou pas . donc ce cas, il faut utiliser la fonction isset() prédéfinis en php pour résoudre le probléme. de plus il faut aussi vérifier le nom du vos champs html.
    if(isset($_POST["Marque"] ) && ....){
    
    
    //votre traitement du code ici
    
    
    }
    


    EDIT : Ajout des balises de code. (la coloration syntaxique )
    Explication disponible ici : https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

    Merci d'y penser à l'avenir.
    1. Merci beaucoup!