Problème d'insertion dans La BD SQL [Résolu]

Signaler
-
Messages postés
493
Date d'inscription
jeudi 7 juillet 2005
Statut
Membre
Dernière intervention
24 mai 2017
-
[b]Bonjour, j'ai un problème au niveau de l'insertion de données lorsque je laisse des champs vide dans le formulaire, la plus part des fois l'erreur est dans la requete n2 (d'apres mon msg d'erreur selon la condition d'exec des requetes SQL) je n'arrive pas à trouver l'erreur exactement.
Voila ma BD/b :

CREATE TABLE IF NOT EXISTS `tab_perso` (
`mat_perso` int(10) NOT NULL,
`Cin` int(10) NOT NULL,
`Nom` varchar(200) NOT NULL,
`Prénom` text NOT NULL,
`Date_naissance` date DEFAULT NULL,
`Localité` text,
`Sexe` set('Homme','Femme') NOT NULL,
`Situation` set('Célibataire','Divorcé(e)','Marié(e)','Veuf(ve)','') DEFAULT NULL,
`Diplôme` set('BAC','Technicien','Technicien sup','Licence','Maitrise','Master','Injénieur','Autre','') DEFAULT NULL,
`Spécialité` set('Marketing','Economie','Gestion','Finance','Informatique','Télécommunication','Commerce','Autre','') DEFAULT NULL,
`Num_phone` text,
`Nbr_enfant` int(11) DEFAULT NULL,
`Obs_perso` text,
PRIMARY KEY (`Cin`),
KEY `matricule` (`mat_perso`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS `tab_profe` (
`Identifiant_Unique` int(10) DEFAULT NULL,
`Mail` varchar(50) DEFAULT NULL,
`Matricule` int(10) NOT NULL,
`Grade` text,
`Etat` set('Contractuel','Titulaire','') NOT NULL,
`Cathégorie` int(11) DEFAULT NULL,
`Service` set('vente',''Technique','Qualité','Reporting','Autre','') NOT NULL,
`Date_titularisation` date DEFAULT NULL,
`Site` set('D1,'D2','D3','') NOT NULL,
`Date_recrut` date DEFAULT NULL,
`Date_mut` date DEFAULT NULL,
`Direction_mut` text,
`Obs_profe` text,
PRIMARY KEY (`Matricule`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

ALTER TABLE `tab_perso`
ADD CONSTRAINT `tab_perso_ibfk_2` FOREIGN KEY (`mat_perso`) REFERENCES `tab_profe` (`Matricule`) ON DELETE CASCADE ON UPDATE CASCADE;

le fichier PHP contenant le code d'insertion ci-dessous :

require('cnx.php');

$monsql1 = "INSERT INTO tab_profe (Identifiant_Unique,Mail,Matricule,Grade,Etat,Cathégorie,Service,Date_titularisation,Site,Date_recrut,Date_mut,Direction_mut,Obs_profe) VALUES ('" . $_POST['identifiant_Unique'] . "','" . $_POST['mail'] . "','" . $_POST['matricule'] . "','" . strtoupper($_POST['grade']) . "','" . $_POST['Etat'] . "','" . $_POST['Cathégorie'] . "','" . $_POST['Service'] . "','" . $Date_titularisation . "','" . $_POST['Site'] . "','" . $Date_recrut . "','" . $Date_mut . "','" . strtoupper($_POST['Direction_mut']) . "','" . strtoupper($_POST['Obs_profe']) ."')";

$monsql2 = "INSERT INTO tab_perso (mat_perso,Cin,Nom,Prénom,Date_naissance,Localité,Gouvernerat,Sexe,Situation,Diplôme,Spécialité,Num_phone,Nbr_enfant,Obs_perso) VALUES ('" . $_POST['matricule'] . "','" . $_POST['cin'] . "','" . strtoupper($_POST['nom']) . "','" . strtoupper($_POST['prénom']) . "','" . $Date_naissance . "','" . strtoupper($_POST['Localité']) . "','" . $_POST['sexe'] . "','" . $_POST['Situation'] . "','" . $_POST['Diplôme'] . "','" . $_POST['Spécialité'] . "','" . $_POST['Num_phone'] . "','" . $_POST['Nbr_enfant'] . "','" . $_POST['Obs_perso'] . "')";

$result1=mysql_query($monsql1);
$result2=mysql_query($monsql2);

if($result1 && $result2)
header("Location: insert_perso.php");
elseif(!$result1 && !$result2)
echo "Error Requete 1 et 2" ;
else
{
if(!$result1 && $result2 )
echo "Echec d'ajout Requete N° 1";
elseif($result1 && !$result2)
echo "Echec d'ajout Requete N° 2";
}


[b]J'ai besoin d'aide sur ce pb pour pouvoir passer à autre chose , si quelqu'un peut m'aider ça sera trop coooool.

Merci d'avance/b

9 réponses

Messages postés
493
Date d'inscription
jeudi 7 juillet 2005
Statut
Membre
Dernière intervention
24 mai 2017
2
Par déduction, car sa ne vient pas de la table, n'y du formulaire html.
Il reste les conditions dans les instructions (if, else, etc...).
Voir même, les valeurs attribués au valeur nulle qui sont elle même nulle car mal instruite.
C'est à voir.

stéph
Messages postés
130
Date d'inscription
lundi 11 janvier 2010
Statut
Membre
Dernière intervention
7 juin 2013

Si tu affiches tes requêtes avec des echos et que tu les exécutes directement dans la bdd ?

J'ai essayé sur mon poste, tout fonctionne (du moins la première requête).

As-tu bien renseigné la propriété "name" de chaque champ de ton formulaire ?
Utilises-tu la même librairie entre la connexion à la bdd et l'envoie de la requête à la bdd ? (mysql_query => quel est ton script de connexion ?)
Messages postés
493
Date d'inscription
jeudi 7 juillet 2005
Statut
Membre
Dernière intervention
24 mai 2017
2
Salut, si l'erreur vient uniquement quand les input ne sont pas remplies.
Alors, c'est très simple, la configuration de certains champs dans ta table sont par défaut en NOT NULL.
Il te suffit de cocher NULL.

Tu as des également des problèmes de sécurité SQL. Fait attention aux injections.
Tu peux lire ceci PHP, MySQL Et La Sécurité

stéph
Salut, @Sylvain j'ai bien vérifié les inpute "name" tt est dans l'ordre et pour l'exec des requetes SQL, c'est toujours la 2ieme qui ne marche pas lorsque je laisse des champs vide par contre, qd je rempli tt le formulaire tt fonctionne !!!! :(
voila le code de cnx :

$hostname_Connex = 'localhost'; //Nom de l'hote
$database_Connex = 'rh'; //Nom de la base de données
$username_Connex = 'root'; //Nom d'utilisateur mySQL
$password_Connex = ''; //Mot de passe de l'utilisateur
$Connex = mysql_pconnect($hostname_Connex, $username_Connex, $password_Connex) or die("Impossible de se connecter : " . mysql_error());
//******************************************************
//SELECTIONNER LA BASE DE DONNES *
//******************************************************
mysql_select_db($database_Connex,$Connex) or die(mysql_error());

@Stay : les champs qui sont deja mis en NOT NULL j' ai mis une condition lors de l'enregistrement pour obliger l'utilisateur de les remplir chaque fiche doit contenir au moin matricule nom , prénom , cin ...
(A propos merci pour le lien " PHP, MySQL Et La Sécurité ")
Messages postés
493
Date d'inscription
jeudi 7 juillet 2005
Statut
Membre
Dernière intervention
24 mai 2017
2
Salut, le champ tab_perso.mat_perso est correctement renseigné ?
Car il doit être unique dans la table !

stéph
Salut stéph, oui puisque c'est une foreign key à chaque test je remplis une nouvelle matricule...
rq : concernant la page modifier_perso.php si je vide les mémes champs qui génére une erreur dans insert_perso.php ça fonctionne toujours ; je pense que c pas un pb de structure de BD et c pas un pb de name input non plus ... je c pas si je suis dans la bonne direction pour la solution...
Dac merci stéph je v voir ça si non je v tout refaire
Messages postés
493
Date d'inscription
jeudi 7 juillet 2005
Statut
Membre
Dernière intervention
24 mai 2017
2
Super, a++

stéph