[MySql/Php]requete jointure de table Inoodb

Résolu/Fermé
alucard67 Messages postés 37 Date d'inscription mercredi 2 mai 2007 Statut Membre Dernière intervention 1 juin 2007 - 25 mai 2007 à 10:07
 anony - 25 févr. 2009 à 13:36
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:

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

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)


et les requetes que j'execute dans mon script php:

le voici :


/////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 et je ne voi vraiment pas d'ou viens l'erreur je me suis casser les dents la dessus 2 jour , alors si une ame charitable voudrai bien voler a mon secour je lui serai tre tre reconnaissant.

merci d'avance!
A voir également:

2 réponses

alucard67 Messages postés 37 Date d'inscription mercredi 2 mai 2007 Statut Membre Dernière intervention 1 juin 2007 3
25 mai 2007 à 14:27
Probleme reglé.
en fait pas besoin de ma table relation, il falait juste ajouter un champ ID_E dans la table carte et fair le lien grace a

mysql_insert_id();

voila j'espere que ca servira à quelqu'un
1
Merci, ca ma servi a moi !
0