Probleme_php
le_me
-
ElementW Messages postés 4814 Date d'inscription Statut Contributeur Dernière intervention -
ElementW Messages postés 4814 Date d'inscription Statut Contributeur Dernière intervention -
Salut,
j'essais de créer une application d'inscription en php au niveau de l'execution je rencontre deux problèmes : Notice: Undefined index: nbr_ventes in C:\...ligne18
Notice: Undefined variable: nom in C:\... ligne21
voici mon code :
<?php
include('../bdd.php');
if (isset($_POST['nom_c']) & isset($_POST['prenom_c']) & isset($_POST['num_tel']) & isset($_POST['adresse']) & isset($_POST['nbr_reservation']) & isset($_POST['nbr_ventes']) & isset($_POST['val_credit']))
$nom = $_POST["nom_c"] ;
$prenom = $_POST["prenom_c"] ;
$tel = $_POST["num_tel"] ;
$adress = $_POST["adresse"];
$nbr_res = $_POST["nbr_reservation"];
$nbr_vent = $_POST["nbr_ventes"]; // col18
$val_cre = $_POST["val_credit"];
$sql=("INSERT INTO client(id_c,nom_c,prenom_c,adresse,num_tel,nbr_reservation,nbr_ventes,val_credit)
VALUES('', '$nom', '$prenom', '$adress', '$tel','$nbr_res','$nbr_vent','$val_cre')"); //col21
$requete = mysql_query($sql, $connect)//l'execution de ma requete
?>
des idées ?! :(
j'essais de créer une application d'inscription en php au niveau de l'execution je rencontre deux problèmes : Notice: Undefined index: nbr_ventes in C:\...ligne18
Notice: Undefined variable: nom in C:\... ligne21
voici mon code :
<?php
include('../bdd.php');
if (isset($_POST['nom_c']) & isset($_POST['prenom_c']) & isset($_POST['num_tel']) & isset($_POST['adresse']) & isset($_POST['nbr_reservation']) & isset($_POST['nbr_ventes']) & isset($_POST['val_credit']))
$nom = $_POST["nom_c"] ;
$prenom = $_POST["prenom_c"] ;
$tel = $_POST["num_tel"] ;
$adress = $_POST["adresse"];
$nbr_res = $_POST["nbr_reservation"];
$nbr_vent = $_POST["nbr_ventes"]; // col18
$val_cre = $_POST["val_credit"];
$sql=("INSERT INTO client(id_c,nom_c,prenom_c,adresse,num_tel,nbr_reservation,nbr_ventes,val_credit)
VALUES('', '$nom', '$prenom', '$adress', '$tel','$nbr_res','$nbr_vent','$val_cre')"); //col21
$requete = mysql_query($sql, $connect)//l'execution de ma requete
?>
des idées ?! :(
4 réponses
('', '$nom', '$prenom', '$adress', '$tel','$nbr_res','$nbr_vent','$val_cre')") t'a pas une virgule en trop avant $ nom?
tout d'abord je pense que si la ligne 18 etait resolu la lige 21 le serait aussi ensuite je peut remarquer que tu a utiliser des ' et des " ce qui pourrait peut poser probleme essaye de modifier ceci et post le resultat
'lut, oulalalah que c'est moche:
1. il faut faire une vérification de chaque élément $_POST, renvoyer une erreur s'il y en a besoin, ou le remplir avec une valeur par défaut. Donc fait comme ceci (emballe tout ça dans une fonction):
2. Injection SQL en masse: tu met des paramètres fourni par le client (navigateur) du site directement dans une requête SQL, c'est la destruction de ta BDD assurée.
Je vois que tu utilises les fonctions
1. il faut faire une vérification de chaque élément $_POST, renvoyer une erreur s'il y en a besoin, ou le remplir avec une valeur par défaut. Donc fait comme ceci (emballe tout ça dans une fonction):
if (!isset($_POST["nom_c"]) || empty($_POST["nom_c"])) return "Erreur"; $nom = $_POST["nom_c"]; ... idem pour les autres ...
2. Injection SQL en masse: tu met des paramètres fourni par le client (navigateur) du site directement dans une requête SQL, c'est la destruction de ta BDD assurée.
Je vois que tu utilises les fonctions
mysql_*, elles sont obsolètes donc à ne plus utiliser, et il faut passer à PDO, qui permet d'intégrer des paramètres à la requête sans risquer l'injection.
Bah de manière générale il vaut mieux apprendre PDO car c'est Portable (Database Object). Mysqli irait certes bien mais est spécifique à mysql, et fournit deux interfaces: une procédurale et une objet, et je déplore cette diversité: on fait soit l'un soit l'autre, mais avoir les deux peux inciter au mélange (car les 2 interfaces sont compatibles entre elles; mélange surtout susceptible chez les apprentis qui commencent tout juste le PHP Orienté Objet, venant du modèle procédural) et intrinsèquement à un mauvais design de code.
Mais autrement mysqli se vaut aussi ;)
Mais autrement mysqli se vaut aussi ;)