msi079
Messages postés212Date d'inscriptionlundi 2 août 2010StatutMembreDernière intervention25 juillet 2013
-
10 oct. 2011 à 21:31
msi079
Messages postés212Date d'inscriptionlundi 2 août 2010StatutMembreDernière intervention25 juillet 2013
-
23 oct. 2011 à 13:46
salut j'ai 5 tables ;
victimes
agent
tuteur
conjoint
que j'ai liées entre elles
a partir de mon formulaire je veux inserrer des données dans mes tables . 2 tables ( tuteur et agent ) contiennent les données envoyées à partir de mon formulaire dans mysql .
les autres tables contiennent rien comme données. de plus ma page web n'affiche que cette erreur :
voici mon code :Nous sommes le 10-10-2011 et il est 19:19Les informations sur les agents ont été ajoutées dans la base de données.
Les informations sur le tuteur ont été ajoutées dans la base de données.
Erreur SQL !INSERT INTO victime(matricule,questionnaire,nom,prenom,datnaiss,lieunaiss,secteur,nationalite,zone,ethnie,sexe,situation,religion,piece,npiece,autrepiece,postale,nompere,prenompere,nommere,prenommere,tel,cel,agent_sid,tuteur_sid) VALUES('2','10001','coulibaly','zana','1979-02-03','lakota','Communal','ivoirienne....1','Urbaine','senoufo','M','Marié','musulman......3','CNI','c10057891','','','','','','','','','2','')
Cannot add or update a child row: a foreign key constraint
<?php
$date = date("d-m-Y");
$heure = date("H:i");
echo 'Nous sommes le '.$date.' et il est '.$heure;
?>
<?php
if (isset($_POST["valider"])) {
//$matricule=trim($_POST["matricule"])
$questionnaire=trim($_POST["questionnaire"]);
$nom=trim($_POST["nom"]);
$prenom=trim($_POST["prenom"]);
$datnaiss=trim($_POST["datnaiss"]);
$lieunaiss=trim($_POST["lieunaiss"]);
$secteur=trim($_POST["secteur"]);
$nationalite=trim($_POST["nationalite"]);
$zone=trim($_POST["zone"]);
$ethnie=trim($_POST["ethnie"]);
$sexe=trim($_POST["sexe"]);
$situation=trim($_POST["situation"]);
$religion=trim($_POST["religion"]);
$piece=trim($_POST["piece"]);
$npiece=trim($_POST["npiece"]);
$autrepiece=trim($_POST["autrepiece"]);
$postale=trim($_POST["postale"]);
$nompere=trim($_POST["nompere"]);
$prenompere=trim($_POST["prenompere"]);
$nommere=trim($_POST["nommere"]);
$prenommere=trim($_POST["prenommere"]);
$tel=trim($_POST["tel"]);
$cel=trim($_POST["cel"]);
//$agent_sid=trim($_POST["agent_sid"]);
//$tuteur_sid=trim($_POST["tuteur_sid"]);
if (empty($questionnaire)) {
$msg="Veuillez saisir le numero du questionnaire!!!!!!!!!";
}
else {
mysql_connect("localhost","root","") or die("erreur de connexion");
mysql_select_db("victimes") or die("Erreur de selection de la BD");
$sql = "INSERT INTO agent(id_agent,agentcol,chef,agentcod,operateur,agentval,agentcor,dateagent)
VALUES('','{$_POST[agentcol]}','{$_POST[ chef]}','{$_POST[agentcod]}','{$_POST[operateur]}','{$_POST[agentval]}','{$_POST[agentcor]}','{$_POST[dateagent]}')";
//on insère les informations du formulaire dans la table
mysql_query($sql) or die('Erreur SQL !'.$sql.'
'.mysql_error());
echo 'Les informations sur les agents ont été ajoutées dans la base de données.';
$agent_sid= mysql_insert_id();
$sql = "INSERT INTO tuteur(id_tuteur,nomtuteur,prenomtuteur,teltuteur,celtuteur)
VALUES('','{$_POST[nomtuteur]}','{$_POST[prenomtuteur]}','{$_POST[teltuteur]}','{$_POST[celtuteur]}')";
// on insère les informations du formulaire dans la table
mysql_query($sql) or die('Erreur SQL !'.$sql.'
'.mysql_error());
echo 'Les informations sur le tuteur ont été ajoutées dans la base de données.';
$matricule = mysql_insert_id();
$sql="INSERT INTO victime(matricule,questionnaire,nom,prenom,datnaiss,lieunaiss,secteur,nationalite,zone,ethnie,sexe,situation,religion,piece,npiece,autrepiece,postale,nompere,prenompere,nommere,prenommere,tel,cel,agent_sid,tuteur_sid) VALUES('".$matricule."','".$questionnaire."','".$nom."','".$prenom."','".$datnaiss."','".$lieunaiss."','".$secteur."','".$nationalite."','".$zone."','".$ethnie."','".$sexe."','".$situation."','".$religion."','".$piece."','".$npiece."','".$autrepiece."','".$postale."','".$nompere."','".$prenompere."','".$nommere."','".$prenommere."','".$tel."','".$cel."','".$agent_sid."','".$tuteur_sid."')";
// on insère les informations du formulaire dans la table
mysql_query($sql) or die('Erreur SQL !'.$sql.'
'.mysql_error());
echo 'Les informations sur les agents ont été ajoutées dans la base de données.';
$tuteur_sid = mysql_insert_id();
$sql = "INSERT INTO enfant(id_enfant, nom1, lien1, age1,etat1,niveau1,nationalite1,ethnie1,religion1,activite1,occupation1,bcg1,polio1,fievre1,rougeole1,deparasitage1,meningite1,matri_enf) VALUES('','{$_POST[nom1]}','{$_POST[lien1]}','{$_POST[age1]}','{$_POST[etat1]}','{$_POST[niveau1]}','{$_POST[nationalite1]}','{$_POST[ethnie1]}','{$_POST[religion1]}','{$_POST[activite1]}','{$_POST[occupation1]}','{$_POST[bcg1]}','{$_POST[polio1]}','{$_POST[fievre1]}','{$_POST[rougeole1]}','{$_POST[deparasitage1]}','{$_POST[meningite1]}','{$_POST[matri_enf]}')";
// on insère les informations du formulaire dans la table
mysql_query($sql) or die('Erreur SQL !'.$sql.'
'.mysql_error());
echo 'Les informations sur le premier enfant ont été ajoutées dans la base de données.';
$matri_enf = mysql_insert_id();
$sql = "INSERT INTO conjoint(id_conjoint, nomc, lienc, agec,etatc,niveauc,nationalitec,ethniec,religionc,activitec,occupationc,bcgc,polioc,fievrec,rougeolec,deparasitagec,meningitec,mati_conjoint) VALUES('','{$_POST[nomc]}','{$_POST[lienc]}','{$_POST[agec]}','{$_POST[etatc]}','{$_POST[niveauc]}','{$_POST[nationalitec]}','{$_POST[ethniec]}','{$_POST[religionc]}','{$_POST[activitec]}','{$_POST[occupationc]}','{$_POST[bcgc]}','{$_POST[polioc]}','{$_POST[fievrec]}','{$_POST[rougeolec]}','{$_POST[deparasitagec]}','{$_POST[meningitec]}','$_POST[mati_conjoint]')";
// on insère les informations du formulaire dans la table
mysql_query($sql) or die('Erreur SQL !'.$sql.'
'.mysql_error());
echo 'Les informations sur votre conjoint ont été ajoutées dans la base de données.';
}
}
?>
NHenry
Messages postés15090Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention 6 novembre 2023159 10 oct. 2011 à 22:20
Bonjour,
"Cannot add or update a child row: a foreign key constraint "
Il te dit (enfin, je pense) que tu tentes d'ajouter une ligne pointant vers une table parent sans que la clé primaire de cette dernière existe.
---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list ---
Mon site
NHenry
Messages postés15090Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention 6 novembre 2023159 10 oct. 2011 à 22:45
Bonjour,
C'est de la conception de base de données.
Tu as définit 2 tables liées, sans prendre en considération les contraintes, exemple plus parlant de ton problème :
Une table Villes liste les villes
Une table Rues liste des rues
Tu tentes d'ajouter une rue à une ville non présente dans la table Villes.
---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list ---
Mon site
msi079
Messages postés212Date d'inscriptionlundi 2 août 2010StatutMembreDernière intervention25 juillet 2013 10 oct. 2011 à 22:49
je suis perdu la je saisi pas ce dont tu parle . sois explicite . je suis debutant j'apprend a lier des tables pour y inserrer des données . stp explique moi lentement et clairement ce que je doi faire . ou se trouve le bloquage. car je vois pas.
Vous n’avez pas trouvé la réponse que vous recherchez ?
NHenry
Messages postés15090Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention 6 novembre 2023159 11 oct. 2011 à 00:03
Bonjour,
Je tente de te remettre en forme ton problème en mettant des noms permettant une meilleur compréhension :
Une table Villes liste les villes
Une table Rues liste des rues
Tu tentes d'ajouter une rue à une ville non présente dans la table Villes.
Or, Il y a une contrainte entre Rues et Villes qui dit que une Rue doit être forcément liée à une Ville.
Je ne vois pas comment être plus clair.
Après, regardes les contraintes sur ta base de données, tu aura surement la cause de ton pb.
---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list ---
Mon site
msi079
Messages postés212Date d'inscriptionlundi 2 août 2010StatutMembreDernière intervention25 juillet 2013 11 oct. 2011 à 18:43
pour mes 5 tables sont . l'insertion des données se passe bien pour les tables agent,tuteur et victimes . mais la ou ca coincent c'est au les tables enfant et conjoint.
une victime a 0 ou plusieurs enfants . alors j'ai crée dans la table enfant matri_enf (clé secondaire qui fait référence à la clé matricule de la table victime ).
je pense donc avoir lié les 2 tables
en utilisant :
ALTER TABLE enfant ADD FOREIGN KEY ( matri_enf ) REFERENCES victime( matricule) ;
alors je pense que je bloque au niveau de $tuteur_sid = mysql_insert_id();
je suis nouveau en php . alors je vois pas mon erreur . sinon je comprend bien votre exlication .
NHenry
Messages postés15090Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention 6 novembre 2023159 11 oct. 2011 à 19:42
Bonjour,
Quelle la le champ de la clé étrangère je ne vois que des champs textes, pas d'ID.
---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list ---
Mon site
msi079
Messages postés212Date d'inscriptionlundi 2 août 2010StatutMembreDernière intervention25 juillet 2013 11 oct. 2011 à 19:56
je suis vraiment debutant en php . j'essai de comprendre . donc je demande ton indulgence .
voici le champ '{$_POST[matri_enf]}' qui refère au champ matricule de victime .
NHenry
Messages postés15090Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention 6 novembre 2023159 11 oct. 2011 à 20:17
Bonjour,
De quel type est le champ, as-tu vérifié avant si la clé primaire existait dans la table cible ?
Ce n'est pas du PHP, c'est du SQL.
---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list ---
Mon site
msi079
Messages postés212Date d'inscriptionlundi 2 août 2010StatutMembreDernière intervention25 juillet 2013 11 oct. 2011 à 20:34
escuse moi si j'ai pas bien saisi en quoi tu veux en venir .
ma table cible est la table enfant .
sa clé primaire est id_enfant de type (INT)
dans la table enfant j'ai matri_enf de type (INT) qui fait refenrence a matricule (INT) de la table victime .
dit moi ce que je dois faire
msi079
Messages postés212Date d'inscriptionlundi 2 août 2010StatutMembreDernière intervention25 juillet 2013 11 oct. 2011 à 20:37
au fait je comprend pas ce que veux dire l'erreur qui s'affiche :
cette erreur m’emmène a comprendre quoi au juste.
ou est-ce que je dois rectifier et pourquoi ??
Erreur SQL !INSERT INTO enfant VALUES('','coulibaly sarha precilia','Enfts......3','AGE','ETAT MATRIMONIAL','NIVEAU D INSTRUCTION','ivoirienne.......1','ETHNIE','RELIGION','SECTEUR D ACTIVITE','OCCUPATION PRINCIPALE','pas BCG','pas DT COQ POLIO +HB','pas FIEVRE JAUNE','pas ROUGEOLE','DEPARASITAGE','CHOISIR','','')
Cannot add or update a child row: a foreign key constraint fails (`victimes`.`enfant`, CONSTRAINT `enfant_ibfk_1` FOREIGN KEY (`matri_enf`) REFERENCES `victime` (`matricule`))
NHenry
Messages postés15090Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention 6 novembre 2023159 11 oct. 2011 à 20:52
Bonjour,
Déjà, il est usuel de préciser les champs quand on insert un enregistrement, ça évite qu'une inversion de 2 champs pose problème et permet aussi de rendre le code plus compréhensible.
Ensuite, je ne vois pas comment être plus clair, le message est en anglais, mais reste clair.
Essayes de montrer un dump de ta base de données si c'est possible ou au pire la structure des tables, car tes explications m'embrouilles plus qu'autre chose.
---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list ---
Mon site
NHenry
Messages postés15090Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention 6 novembre 2023159 14 oct. 2011 à 20:23
Bonjour,
La contrainte :
Foreign Key (matri_enf) references victime(matricule)
Indique que la valeur mise dans le champ matri_enf doit se trouver dans victime.matricule.
C'est ce que je dit depuis le début.
---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list ---
Mon site
msi079
Messages postés212Date d'inscriptionlundi 2 août 2010StatutMembreDernière intervention25 juillet 2013 15 oct. 2011 à 11:51
salut.
j'ai pu trouver une solution à ça . mais voici mon nouveau problème.
je reçois cette erreur :
Erreur SQL !INSERT INTO victime(matricule,questionnaire,region,departement,sousprefecture,secteur,village,zone,nom,pere,mere,doc,ndoc,autredoc,datarriv,postale,tel,cel,nom_rep,tel_rep,cel_rep,agent_sid,info_sid) VALUES('','10002','Lagunes','abidjan','abidjan','Communal','abidjan','Urbaine','coulibaly zana souleymane','coulibaly t','koné m','CNI','c10000145620','','2011-05-04','bp7 bingerville','22525428','01789050','',,'','','2','1')
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''','','2','1')' at line 1
---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list ---
Mon site
NHenry
Messages postés15090Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention 6 novembre 2023159 15 oct. 2011 à 20:42
Bonjour,
Je m'arrête sur le premier avis :
C:\wamp\www\INSCRIPTION\enregistrement.php sur la ligne 41
Tu dois utiliser une valeur "agentcol".
Après, il faut voir le code.
---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list ---
Mon site