Page 1 sur 1

problème de requète

Posté : 24 mai 2007, 16:29
par Invité
Bonjour, je suis en train de fair un programme et j'ai quelque difficulté pour remplir ma base de données.

Alors voila ce que j'essay de faire:

Dans un premier temps je remplie une table "equipements" avec l'identifiant ID_E
ensuite je rempli une autre table "cartes" avec l'identifiant ID_C

ensuite pour fair le lien je creer une autre table relation avec les ID de mes deux tables qui sont ID_C et ID_E.

je veux que quand je rentre une données dans la table equipement et carte , les ID de ces derbniers soient mise a jour dans ma table .

pour ce fair j'ai rentré ces lignes dans phpmyadmin:

Code : Tout sélectionner

CREATE TABLE cartes ( ID_C tinyint(5) NOT NULL auto_increment, description varchar(256) NOT NULL default '', Serial varchar(250) NOT NULL default '', HW_Version varchar(256) NOT NULL default '', SW_Version varchar (256) NOT NULL default '', PRIMARY KEY (ID_C) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; CREATE TABLE equipements ( ID_E tinyint(5) NOT NULL auto_increment, IP varchar(20) NOT NULL default '', marque varchar(20) NOT NULL default '', nom varchar(20) NOT NULL default '', PRIMARY KEY (ID_E) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; CREATE TABLE `relation` ( `ID_C` TINYINT( 5 ) NOT NULL , `ID_E` TINYINT( 5 ) NOT NULL , FOREIGN KEY ( ID_C ) REFERENCES cartes( ID_C ) ON DELETE CASCADE ON UPDATE CASCADE , FOREIGN KEY ( ID_E ) REFERENCES equipements( ID_E ) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE = InnoDB DEFAULT CHARSET = latin1 ;


et lorque je lance mon programme voila ce qu'affiche ma page

Code : Tout sélectionner

Erreur SQL dans la table relation !INSERT INTO relation(ID_C, ID_E) VALUES('projet.cartes.ID_C','projet.equipements.ID_E') Cannot add or update a child row: a foreign key constraint fails (`projet/relation`, CONSTRAINT `relation_ibfk_2` FOREIGN KEY (`ID_E`) REFERENCES `equipements` (`ID_E`) ON DELETE CASCADE ON UPDATE CASCADE)
j'utilise la version 5.0.27 de mysql

J'espere que qulqu'un poura me filer un pitit coup de main.

Merci d'avance aux personne qui pouront m'aider, et j'espere qu'il y en aura.

Posté : 24 mai 2007, 16:39
par alucard67
ahh ui j'ai oublié de mettre aussi les requetes que j'execute dans mon script php:

le voici :

Code : Tout sélectionner

///////////////////////AJOUT DES INFO DANS LA TABLE CARTES//////////////////////// for ($i=1;$i<=16;$i++) { $description=lire_ligne('reponse_snmp_motorola.txt',$i+16); $serial=lire_ligne('reponse_snmp_motorola.txt',$i+32); $HW=lire_ligne('reponse_snmp_motorola.txt',$i+48); $SW=lire_ligne('reponse_snmp_motorola.txt',$i+64); $sql = "INSERT INTO cartes(ID_C, description, serial, HW_version, SW_version) VALUES('','$description','$serial','$HW','$SW')"; // on insère les informations dans la table mysql_query($sql) or die('Erreur SQL dans la table Carte !'.$sql.'<br>'.mysql_error()); } //////////////////////////AJOUT DES INFOS DANS LA TABLE EQUIPEMENTS///////////////// $sql2 = "INSERT INTO equipements(ID_E, IP, marque, nom) VALUES('','$IP2','Motorola','$nom2')"; mysql_query($sql2) or die('Erreur SQL dans la table Equipement !'.$sql2.'<br>'.mysql_error()); /////////////////////AJOUT DES INFOS DANS LA TABLE RELATIONS//////////////////////// $sql3= "INSERT INTO relation(ID_C, ID_E) VALUES('projet.cartes.ID_C','projet.equipements.ID_E')"; mysql_query($sql3) or die ('Erreur SQL dans la table relation !'.$sql3.'<br>'.mysql_error());

voila cette fois je pense qu'il y a tout.

Posté : 25 mai 2007, 10:37
par alucard67
upppp, svp quelqu'un aider moi :roll:

Posté : 25 mai 2007, 11:10
par zeus
Modération :
Anonymous, les "up" sont interdits sur PHPFrance.

Si tu n'as pas obtenu de réponse, c'est (au choix) :
- que ta question est mal formulée : reformule-la différemment ;
- que personne ne connaît la réponse ici : faire un "up" ne te donnera pas davantage de résultats ;
- que la réponse demandée exige un travail important que personne ne va faire à ta place ;
- que trop peu de temps s'est écoulé depuis ton précédent message pour qu'un membre ait pu y répondre.

Merci de prendre le temps de lire les règlements.

Posté : 25 mai 2007, 11:47
par Hubert Roksor

Code : Tout sélectionner

INSERT INTO relation(ID_C, ID_E) VALUES('projet.cartes.ID_C','projet.equipements.ID_E')
Tu insères des chaînes de caractères dans des champs texte, MySQL ne trouve pas la correspondance dans les tables de références et donc refuse d'insérer l'enregistrement. Remplace ces chaînes de caractères par les valeurs de ID_C et ID_E correspondantes. Je pense que la fonction que tu cherches est mysql_last_insert_id().

Posté : 25 mai 2007, 16:34
par Invité
merci pour ta réponse mais j'ai trouver la solution, effectivement grace a mysql_insert_id(), je me suis demerder.
en supprimant ma base relation et en ajoutant le champs ID_E dans la table cartes.

et voila .

ciao.