Téléchargement
illégal
Posez votre question Signaler

[MySql/Php]requete jointure de table Inoodb [Résolu]

alucard67 38Messages postés 2 mai 2007Date d'inscription - Dernière réponse le 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!
Lire la suite 

[MySql/Php]requete jointure de table Inoodb »

2 réponses
Réponse
+1
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
Merci, ca ma servi a moi !
Ajouter un commentaire
Ce document intitulé « [MySql/Php]requete jointure de table Inoodb » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?