Bonjour,

J'ai une question qui a sans doute déjà été résolue mais j'ai beau avoir cherché je ne trouve pas..

Donc voila j'ai une table PERSONNE spécialisée en deux tables SPECIALISTE et UTILISATEUR.
La table SPECIALISTE se spécialise en deux autres tables ADMINISTRATEUR et SUPER_ADMINISTRATEUR.

Mon but est d'insérer un nouvel Administrateur.

Donc voilà mon code:
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 
try{
	$this->bdd->beginTransaction();
	$requete = $this->bdd->prepare("INSERT INTO PERSONNE(typePersonne, clePersonne, nom, prenom, login, password, adrE, tel) VALUES(:typePersonne, :clePersonne, :nom, :prenom, :login, :password, :adrE, :tel);");
	$requete->execute(array(
		'typePersonne'=> $this->type,
		'clePersonne' => $this->cle,
		'nom'=> $this->nom,
		'prenom'=> $this->prenom,
		'login'=> $this->login,
		'password'=> $this->pass1,
		'adrE'=> $this->adrE,
		'tel'=> $this->tel
	));
	$PDOid = $this->bdd->prepare("SELECT idPersonne FROM PERSONNE WHERE clePersonne = :cle");
	$PDOid->execute(array(
		'cle' => $this->cle
	));
	$id = $PDOid->fetch();
	$requete2 = $this->bdd->prepare("INSERT INTO SPECIALISTE(idSpecialiste) VALUES (:id);");
	$requete2->execute(array(
		'id' => $id
	));
	$requete3 = $this->bdd->prepare("INSERT INTO ADMINISTRATEUR(idAdministrateur) VALUES (:id);");
	$requete3->execute(array(
		'id' => $id
	));
	$this->bdd->commit();
	$erreur = "OK";;
}catch(Exception $e){
	$this->bdd->ROLLBACK();
	$erreur = $id." ".$e;
}
Il est donc censé insérer les valeurs dans les tables PERSONNE puis SPECIALISTE puis ADMINISTRATEUR.
Cependant les foreign keys des tables SPECIALISTE et ADMINISTRATEUR bloquent:
Quand j'insère dans SPECIALISTE, une erreur me dit qu'il n'existe pas dans PERSONNE....

Je ne vois pas comment procéder. Ne me dites pas qu'il faut faire les requêtes une par une ? Je veux dire dans des fonctions différentes ?

Merci d'avance de vos réponses !