EasyPHP Creation de tables avec jointures

Résolu/Fermé
BoyDkr81 Messages postés 32 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 7 août 2008 - 15 mai 2008 à 15:35
BoyDkr81 Messages postés 32 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 7 août 2008 - 15 mai 2008 à 16:12
Bonjour,

J'ai un projet de gestion de salarié à effectuer qui comprend l'affichage, la suppression, la modification, l'ajout via un formulaire d'un salarié.
J'ai créé la base avec les différentes tables avec phpMyAdmin

Afficher: InnoDB free: 3072 kB (6 Enregistrements) carte_orange
Afficher: InnoDB free: 3072 kB (4 Enregistrements) categorie
Afficher: InnoDB free: 3072 kB; (`ID_Salarie`) REFER `asm/salarie`(`ID_Salarie`) ON DELETE NO ACTION ON UPDATE CASCADE; (`ID_Nature_Contrat`) REFER `asm/nature_contrat`(`ID_Nature_Contrat`) ON DELETE NO ACTION ON UPDATE CASCADE; (`ID_Profil_Contrat`) REFER `asm/profil_contrat`(`ID_Profil_Contrat`) ON DELETE NO ACTION ON UPDATE CASCADE; (`ID_Type_Contrat`) REFER `asm/type_contrat`(`ID_Type_Contrat`) ON DELETE NO ACTION ON UPDATE CASCADE (5 Enregistrements) contrat
Afficher: InnoDB free: 3072 kB (3 Enregistrements) diplome
Afficher: InnoDB free: 3072 kB (0 Enregistrements) emploi
Afficher: InnoDB free: 3072 kB (12 Enregistrements) langue
Afficher: InnoDB free: 3072 kB (2 Enregistrements) nature_contrat
Afficher: InnoDB free: 3072 kB (7 Enregistrements) pole_activite
Afficher: InnoDB free: 3072 kB (9 Enregistrements) prime
Afficher: InnoDB free: 3072 kB (3 Enregistrements) profil_contrat
Afficher: InnoDB free: 3072 kB; (`ID_Langue`) REFER `asm/langue`(`ID_Langue`) ON DELETE NO ACTION ON UPDATE CASCADE; (`ID_Salarie`) REFER `asm/salarie`(`ID_Salarie`) ON DELETE NO ACTION ON UPDATE CASCADE (0 Enregistrements) relation_1
Afficher: InnoDB free: 3072 kB; (`ID_Langue`) REFER `asm/langue`(`ID_Langue`) ON DELETE NO ACTION ON UPDATE CASCADE; (`ID_Prime`) REFER `asm/prime`(`ID_Prime`) ON DELETE NO ACTION ON UPDATE CASCADE (0 Enregistrements) relation_2
Afficher: InnoDB free: 3072 kB; (`ID_Prime`) REFER `asm/prime`(`ID_Prime`) ON DELETE NO ACTION ON UPDATE CASCADE; (`ID_Diplome`) REFER `asm/diplome`(`ID_Diplome`) ON DELETE NO ACTION ON UPDATE CASCADE (0 Enregistrements) relation_3
Afficher: InnoDB free: 3072 kB; (`ID_Salarie`) REFER `asm/salarie`(`ID_Salarie`) ON DELETE NO ACTION ON UPDATE CASCADE; (`ID_Categorie`) REFER `asm/categorie`(`ID_Categorie`) ON DELETE NO ACTION ON UPDATE CASCADE (0 Enregistrements) relation_4
Afficher: InnoDB free: 3072 kB; (`ID_Emploi`) REFER `asm/emploi`(`ID_Emploi`) ON DELETE NO ACTION ON UPDATE CASCADE; (`ID_Salarie`) REFER `asm/salarie`(`ID_Salarie`) ON DELETE NO ACTION ON UPDATE CASCADE (0 Enregistrements) relation_5
Afficher: InnoDB free: 3072 kB; (`ID_Situation_Familiale`) REFER `asm/situation_familiale`(`ID_Situation_Familiale`) ON DELETE NO ACTION ON UPDATE CASCADE; (`ID_Salarie`) REFER `asm/salarie`(`ID_Salarie`) ON DELETE NO ACTION ON UPDATE CASCADE (0 Enregistrements) relation_6
Afficher: InnoDB free: 3072 kB; (`ID_Carte_Orange`) REFER `asm/carte_orange`(`ID_Carte_Orange`) ON DELETE NO ACTION ON UPDATE CASCADE; (`ID_Salarie`) REFER `asm/salarie`(`ID_Salarie`) ON DELETE NO ACTION ON UPDATE CASCADE (0 Enregistrements) relation_7
Afficher: InnoDB free: 3072 kB; (`ID_Pole_Activite`) REFER `asm/pole_activite`(`ID_Pole_Activite`) ON DELETE NO ACTION ON UPDATE CASCADE; (`ID_Responsable_Marque`) REFER `asm/responsable_marque`(`ID_Responsable_Marque`) ON DELETE NO ACTION ON UPDATE CASCADE (4 Enregistrements) relation_8
Afficher: InnoDB free: 3072 kB; (`ID_Salarie`) REFER `asm/salarie`(`ID_Salarie`) ON DELETE NO ACTION ON UPDATE CASCADE; (`ID_Pole_Activite`) REFER `asm/pole_activite`(`ID_Pole_Activite`) ON DELETE NO ACTION ON UPDATE CASCADE (0 Enregistrements) relation_9
Afficher: InnoDB free: 3072 kB; (`ID_Diplome`) REFER `asm/diplome`(`ID_Diplome`) ON DELETE NO ACTION ON UPDATE CASCADE; (`ID_Salarie`) REFER `asm/salarie`(`ID_Salarie`) ON DELETE NO ACTION ON UPDATE CASCADE (0 Enregistrements) relation_10
Afficher: InnoDB free: 3072 kB (2 Enregistrements) responsable_marque
Afficher: InnoDB free: 3072 kB (5 Enregistrements) salarie
Afficher: InnoDB free: 3072 kB (5 Enregistrements) situation_familiale
Afficher: InnoDB free: 3072 kB (2 Enregistrements) type_contrat
Afficher: InnoDB free: 3072 kB (1 Enregistrements) user

ainsi que les pages html et php pour effectuer les différentes opérations.
Le code php fonctionne au niveau de l'affichage et de l'ajout(pour l'instant juste dans la table salarié).
Le fait est que j'ai des tables qui doivent êtres reliées entre elles comme la table contrat(voir ci-dessus) qui doit être relié avec les tables salarie, nature_contrat, type_contrat, type_contrat, profil_contrat et contenir les clés primaires de chacune de ces tables.
Ce que j'ai fait avec la gestion des relations en indexant les clés(voir ci-dessus) mais lorsque je veux faire une suppression dans la table salarié je n'y arrive pas car j'ai une erreur de type:
Erreur MySQL n°1217 : Impossible de supprimer un enregistrement père : une contrainte externe l'empêche.
Alors si quelqu'un connait une méthode pour que tout fonctionne nickel je serais très reconnaissant de m'en faire part.
Merci d'avance.
A voir également:

3 réponses

Thanahthaus Messages postés 139 Date d'inscription mercredi 9 avril 2008 Statut Membre Dernière intervention 13 novembre 2009 27
15 mai 2008 à 15:41
Bonjour,
En effet puisque tu à lié un ou plusieurs contrat a un salarié, tu ne peut pas supprimé le salarié.
Sinon il y aurai non respect de ta contraint d'intégrité.
Si tu veux pouvoir supprimer un salarié il faut qu'il n'est aucun contrat qui lui soit rattaché.
0
BoyDkr81 Messages postés 32 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 7 août 2008
15 mai 2008 à 15:43
OK et je fais comment alors je supprime quoi d'abord quelles sont les étapes alors pour supprimer un salarié dan smon cas?
0
Thanahthaus Messages postés 139 Date d'inscription mercredi 9 avril 2008 Statut Membre Dernière intervention 13 novembre 2009 27
15 mai 2008 à 15:46
J'ai pas tout lu ton code en faite et j'en ai un peu la flemme :p
Globalement il faut que tu supprime d'abord les éléments qui ne dépendent de rien.
Genre si tu a salarier qui a un ou plusieur contrat qui lui même peut avoir un ou plusieurs X.
Alors tu supprime d'abord les X correspondants au contrat, puis les contrats correspondant au salarier et enfin le salarier.

Je vais lire tout ton post, je répondrai mieu si tu a pas compris :p
0
BoyDkr81 Messages postés 32 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 7 août 2008
15 mai 2008 à 15:55
Se serait vraiment sympa de ta part car j'avoue je suis perdu la ça fait 2 semaines que je n'arrive pas à supprimer un salarié avec toutes ses données dans toutes les tables et même d'en ajouter un.
En fait pour l'ajout cela fonctionne dans la table salarié mais je n'arrive pas par exemple après avoir renseigné tous les champs dans le formulaire de remplir les autres tables.
Merci de te pencher dessus.
0
Thanahthaus Messages postés 139 Date d'inscription mercredi 9 avril 2008 Statut Membre Dernière intervention 13 novembre 2009 27
15 mai 2008 à 16:08
Hum... Je comprend pas tout à ce que tu à posté...
N'étant malheureusement pas expert en base de données, je ne pourrai pas t'aider plus que ça.
Désolé.
0
BoyDkr81 Messages postés 32 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 7 août 2008
15 mai 2008 à 16:12
OK merci quand même.
0