Rechercher : dans
Par :

[MySql/Php]requete jointure de table Inoodb

Dernière réponse le 25 fév 2009 à 13:36:51 alucard67, le 25 mai 2007 à 10:07:49 
 Signaler ce message aux modérateurs

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!
Configuration: Windows 2000
Internet Explorer 6.0

Meilleures réponses pour « [MySql/Php]requete jointure de table Inoodb » dans :
Installation rapide de LAMP (Apache+MySql+php) sous Linux VoirLAMP = Linux+Apache+MySql+Php. C'est le serveur web par excellence. L'ensemble est facile à installer. Installation rapide sudo aptitude install apache2 php5 mysql-server php5-mysql libapache2-mod-php5 Le mot de passe administrateur mySQL...
PHP - Bases de données VoirPhp permet un interfaçage très simple avec un grand nombre de bases de données. Lorsqu'une base de données n'est pas directement supportée par Php, il est possible d'utiliser un driver ODBC, pilote standard pour communiquer avec les bases de...
SQL - Jointures VoirExpression des jointures Une jointure (ou θ-jointure) est un produit cartésien de deux tables. On appelle équijointure une θ-jointure dont la qualification est une égalité entre deux colonnes. En SQL, l'expression d'une jointure se...

1

alucard67, le 25 mai 2007 à 14:27:54
  • +1

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

Répondre à alucard67

2

 anony, le 25 fév 2009 à 13:36:51

Merci, ca ma servi a moi !

Répondre à anony
Collection CommentÇaMarche.net