Probleme_php

le_me -  
ElementW Messages postés 5690 Statut Contributeur -
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 ?! :(

4 réponses

Mrmichant Messages postés 423 Statut Membre 9
 
regarde si nbr_ventes est bien écrit sans majuscrule ou avec des S.
0
Mrmichant Messages postés 423 Statut Membre 9
 
('', '$nom', '$prenom', '$adress', '$tel','$nbr_res','$nbr_vent','$val_cre')") t'a pas une virgule en trop avant $ nom?
0
pierre72210 Messages postés 78 Statut Membre
 
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
0
Mrmichant Messages postés 423 Statut Membre 9
 
Dépend de quelle logiciel des fois ca change rien les types de guillemet
0
pierre72210 Messages postés 78 Statut Membre
 
le logiciel na rien a voir c'est la version de php qui change quelque chose mais je suis d'accord il se peut que ca n'est rien a voir!!!
0
ElementW Messages postés 5690 Statut Contributeur 1 224
 
'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):
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.
0
Mrmichant Messages postés 423 Statut Membre 9
 
mysqli suffirait aussi non?
0
ElementW Messages postés 5690 Statut Contributeur 1 224
 
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 ;)
0