EasyPHP Creation de tables avec jointures

[Résolu/Fermé]
Signaler
Messages postés
32
Date d'inscription
lundi 5 mai 2008
Statut
Membre
Dernière intervention
7 août 2008
-
Messages postés
32
Date d'inscription
lundi 5 mai 2008
Statut
Membre
Dernière intervention
7 août 2008
-
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.

3 réponses

Messages postés
139
Date d'inscription
mercredi 9 avril 2008
Statut
Membre
Dernière intervention
13 novembre 2009
27
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é.
Messages postés
32
Date d'inscription
lundi 5 mai 2008
Statut
Membre
Dernière intervention
7 août 2008

OK et je fais comment alors je supprime quoi d'abord quelles sont les étapes alors pour supprimer un salarié dan smon cas?
Messages postés
139
Date d'inscription
mercredi 9 avril 2008
Statut
Membre
Dernière intervention
13 novembre 2009
27
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
Messages postés
32
Date d'inscription
lundi 5 mai 2008
Statut
Membre
Dernière intervention
7 août 2008

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.
Messages postés
139
Date d'inscription
mercredi 9 avril 2008
Statut
Membre
Dernière intervention
13 novembre 2009
27
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é.
Messages postés
32
Date d'inscription
lundi 5 mai 2008
Statut
Membre
Dernière intervention
7 août 2008

OK merci quand même.