Forum Clubic

Problème de clées étrangères dans ma base PHPmyadmin

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

Salut, essaye comme ceci:

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 references services(id_serv),
id_problem int(11) NOT NULL references problemes(id_prob),
id_img int(11) NOT NULL references images(id_image),
PRIMARY KEY (id_cli),
) ENGINE=InnoDB;

P.S.: je connais pas phpmyadmin …
Edité le 19/06/2008 à 13:29

Ahhh ouais !
Là il n’y as plus d’erreur de script MAIS… lol
Dans la table client de n’ai pas les informations (la valeur des clé primaires) des autres tables, en fait il y a la valeur 0.

[EDIT]
En fait avec la requete sql comme m’as tu as donné, il ne fait pas de liaison.

Merci quand même.
Edité le 19/06/2008 à 14:20

euh il ne te manque pas les valeurs de tes clés étrangères dans ta requêtes?

tes clés étrangères renvoient vers 1 ou plusieurs tables donc il faut que tu les mettent

INSERT INTO clients(id_cli, nom, prenom, nom_ordi, mail,key1,key2,key3)VALUES(’’,‘aaa’,‘aaa’,‘aaa’,‘èrti’, key1,key2,key3)
Edité le 20/06/2008 à 13:49