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

- - Dernière réponse : cs_stay
Messages postés
496
Date d'inscription
jeudi 7 juillet 2005
Statut
Membre
Dernière intervention
24 mai 2017
- 31 janv. 2013 à 13:16
[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
Afficher la suite 

9 réponses

Meilleure réponse
Messages postés
496
Date d'inscription
jeudi 7 juillet 2005
Statut
Membre
Dernière intervention
24 mai 2017
2
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 210 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_stay
Messages postés
130
Date d'inscription
lundi 11 janvier 2010
Statut
Membre
Dernière intervention
7 juin 2013
0
Merci
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 ?)
Commenter la réponse de sylvain64520
Messages postés
496
Date d'inscription
jeudi 7 juillet 2005
Statut
Membre
Dernière intervention
24 mai 2017
2
0
Merci
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
Commenter la réponse de cs_stay
0
Merci
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é ")
Commenter la réponse de AnisLaSs
Messages postés
496
Date d'inscription
jeudi 7 juillet 2005
Statut
Membre
Dernière intervention
24 mai 2017
2
0
Merci
Salut, le champ tab_perso.mat_perso est correctement renseigné ?
Car il doit être unique dans la table !

stéph
Commenter la réponse de cs_stay
0
Merci
Salut stéph, oui puisque c'est une foreign key à chaque test je remplis une nouvelle matricule...
Commenter la réponse de AnisLaSs
0
Merci
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...
Commenter la réponse de AnisLaSs
0
Merci
Dac merci stéph je v voir ça si non je v tout refaire
Commenter la réponse de AnisLaSs
Messages postés
496
Date d'inscription
jeudi 7 juillet 2005
Statut
Membre
Dernière intervention
24 mai 2017
2
0
Merci
Super, a++

stéph
Commenter la réponse de cs_stay