Bonjour !
C’est encore moi, cette fois j’ai un réel soucis avec mes clés étrangères dans une table de ma base de données. (table client)
On dirait qu’il n’y à pas de liaisons entre les différentes tables car en exécutant le script j’ai ce message:
Erreur SQL !
INSERT INTO clients(id_cli, nom, prenom, nom_ordi, mail)VALUES(’’,‘aaa’,‘aaa’,‘aaa’,‘èrti’)
Cannot add or update a child row: a foreign key constraint fails (formdemande/clients
, CONSTRAINT clients_ibfk_1
FOREIGN KEY (id_service
) REFERENCES services
(id_serv
))
or j’ai fais ces liaison en créant les tables en SQL voici mes codes:
BASE DE DONNEES
CREATE TABLE services
(
id_serv int(11) NOT NULL auto_increment,
nom_serv varchar(20),
PRIMARY KEY (id_serv)
) ENGINE=InnoDB;
CREATE TABLE problemes
(
id_prob int(11) NOT NULL auto_increment,
description varchar(500),
PRIMARY KEY (id_prob)
) ENGINE=InnoDB;
CREATE TABLE images
(
id_image int(11) NOT NULL auto_increment,
nom_image varchar(30),
PRIMARY KEY (id_image)
) ENGINE=InnoDB;
CREATE TABLE clients
(
id_cli int(11) NOT NULL auto_increment,
nom varchar(20),
prenom varchar(20),
nom_ordi varchar(20),
mail varchar(50),
id_service int(11) NOT NULL,
id_problem int(11) NOT NULL,
id_img int(11) NOT NULL,
PRIMARY KEY (id_cli),
Foreign Key (id_service) references services(id_serv),
Foreign Key (id_problem) references problemes(id_prob),
Foreign Key (id_img) references images(id_image)
) ENGINE=InnoDB;
PHP
// on écrit les requêtes sql
$sql1 = "INSERT INTO clients(id_cli, nom, prenom, nom_ordi, mail)VALUES('','$nom','$prenom','$nom_pc','$ad_mail')";
$sql2 = "INSERT INTO services(id_serv, nom_serv)VALUES('','$service')";
$sql3 = "INSERT INTO problemes(id_prob, description)VALUES('','$description')";
// on insère les informations du formulaire dans les tables
mysql_query($sql3) or die('Erreur SQL !<br>'.$sql3.'<br>'.mysql_error());
mysql_query($sql2) or die('Erreur SQL !<br>'.$sql2.'<br>'.mysql_error());
mysql_query($sql1) or die('Erreur SQL !<br>'.$sql1.'<br>'.mysql_error());
Dans l’attente de vos solutions…
Je vous remercie.
Edité le 19/06/2008 à 12:17