Undefined index

Résolu/Fermé
R.Khaleesi Messages postés 3 Date d'inscription lundi 28 décembre 2015 Statut Membre Dernière intervention 28 décembre 2015 - Modifié par jordane45 le 28/12/2015 à 02:46
R.Khaleesi Messages postés 3 Date d'inscription lundi 28 décembre 2015 Statut Membre Dernière intervention 28 décembre 2015 - 28 déc. 2015 à 14:25
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

jordane45 Messages postés 36570 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 26 novembre 2022 4 397
28 déc. 2015 à 02:53
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'
3
R.Khaleesi Messages postés 3 Date d'inscription lundi 28 décembre 2015 Statut Membre Dernière intervention 28 décembre 2015
28 déc. 2015 à 14:25
Merci beaucoup ! ça fonctionne parfaitement :) !
0
syrine01 Messages postés 44 Date d'inscription dimanche 5 février 2012 Statut Membre Dernière intervention 10 avril 2017
Modifié par jordane45 le 28/12/2015 à 02:46
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.
0
R.Khaleesi Messages postés 3 Date d'inscription lundi 28 décembre 2015 Statut Membre Dernière intervention 28 décembre 2015
28 déc. 2015 à 14:25
Merci beaucoup!
0