Probleme_php

le_me -  
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 ?! :(

4 réponses

Mrmichant Messages postés 258 Date d'inscription   Statut Membre Dernière intervention   9
 
regarde si nbr_ventes est bien écrit sans majuscrule ou avec des S.
0
Mrmichant Messages postés 258 Date d'inscription   Statut Membre Dernière intervention   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 67 Date d'inscription   Statut Membre Dernière intervention  
 
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 258 Date d'inscription   Statut Membre Dernière intervention   9
 
Dépend de quelle logiciel des fois ca change rien les types de guillemet
0
pierre72210 Messages postés 67 Date d'inscription   Statut Membre Dernière intervention  
 
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 4814 Date d'inscription   Statut Contributeur Dernière intervention   1 223
 
'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 258 Date d'inscription   Statut Membre Dernière intervention   9
 
mysqli suffirait aussi non?
0
ElementW Messages postés 4814 Date d'inscription   Statut Contributeur Dernière intervention   1 223
 
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