Problème d'insertion dans La BD SQL

Résolu
AnisLaSs - 30 janv. 2013 à 16:00
cs_stay Messages postés 493 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
A voir également:

9 réponses

cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
31 janv. 2013 à 10:21
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
3
sylvain64520 Messages postés 130 Date d'inscription lundi 11 janvier 2010 Statut Membre Dernière intervention 7 juin 2013
30 janv. 2013 à 16:37
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 ?)
0
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
30 janv. 2013 à 17:36
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
0
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é ")
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
31 janv. 2013 à 09:14
Salut, le champ tab_perso.mat_perso est correctement renseigné ?
Car il doit être unique dans la table !

stéph
0
Salut stéph, oui puisque c'est une foreign key à chaque test je remplis une nouvelle matricule...
0
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...
0
Dac merci stéph je v voir ça si non je v tout refaire
0
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
31 janv. 2013 à 13:16
Super, a++

stéph
0
Rejoignez-nous