Partage
  • Partager sur Facebook
  • Partager sur Twitter

Script permettant de mettre à jour les FOREIGN KEY

    8 janvier 2011 à 12:33:17

    Salut, je suis nouveau ici et j'ai rencontré quelques soucis récemment!!!
    Voilà, j'ai créé une Base de données relationnelle avec des FOREIGN KEY. Cette base est utilisée par mon application en PHP qui permet d'enregistrer via des formulaires les Paroissiens des églises. Un exemple de deux tables en relations
    --
    -- Structure de la table `inscriptions`
    --

    CREATE TABLE IF NOT EXISTS `inscriptions` (
    `inscription_ID` int(10) unsigned NOT NULL AUTO_INCREMENT,
    `inscription_intitule` enum('Baptême','Communion','Confirmation','Mariage','Décés') COLLATE utf8_unicode_ci NOT NULL DEFAULT 'Baptême',
    `inscription_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
    `inscription_lieu` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
    `paroissien_ID` int(10) unsigned NOT NULL,
    PRIMARY KEY (`inscription_ID`),
    KEY `fk_paroissien_ID` (`paroissien_ID`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;

    --
    -- Structure de la table `paroissiens`
    --

    CREATE TABLE IF NOT EXISTS `paroissiens` (
    `paroissien_ID` int(10) unsigned NOT NULL AUTO_INCREMENT,
    `paroissien_nom` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
    `paroissien_prenom` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
    `paroissien_sexe` enum('M','F') COLLATE utf8_unicode_ci NOT NULL DEFAULT 'M',
    `paroissien_datenaiss` date NOT NULL,
    `paroissien_lieunaiss` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
    `parent_ID` int(10) unsigned DEFAULT NULL,
    `bapteme_ID` int(10) unsigned DEFAULT NULL,
    `communion_ID` int(10) unsigned DEFAULT NULL,
    `confirmation_ID` int(10) unsigned DEFAULT NULL,
    `mariage_ID` int(10) unsigned DEFAULT NULL,
    `deces_ID` int(10) unsigned DEFAULT NULL,
    PRIMARY KEY (`paroissien_ID`),
    KEY `fk_parentID` (`parent_ID`),
    KEY `fk_baptemeID` (`bapteme_ID`),
    KEY `fk_communionID` (`communion_ID`),
    KEY `fk_confirmationID` (`confirmation_ID`),
    KEY `fk_mariageID` (`mariage_ID`),
    KEY `fk_decesID` (`deces_ID`),
    KEY `paroissien_datenaiss` (`paroissien_datenaiss`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3 ;

    Je m'explique un peu pour la relation qui existe pour ces 2 tables:
    *Chaque paroissien a fait au moins "1" inscription, ou "n" inscriptions.
    *Chaque inscription est faite par "1 et 1 seul" paroissien.

    Maintenant, à chaque fois qu'on remplit la fiche du paroissien, je rencontre des soucis pour réaliser la requête de remplissage des champs des 2 tables afin de pouvoir exécuter celle en-desous

    $req = "SELECT paroissien_nom, inscription_intitule, inscription_lieu FROM paroissien P, inscriptions I
    WHERE P.paroissien_ID=I.paroissien_ID" ;

    Merci de votre temps............
    • Partager sur Facebook
    • Partager sur Twitter
      8 janvier 2011 à 15:14:27

      bonjour,
      le moteur MyISAM ne gère pas les FK. innoDB oui.
      De plus, pour moi, ta BD est mal construite.
      Enlève les bapteme_ID, ... de la table paroissiens.
      Dans la table inscriptions tu as paroissien_ID, ce sera suffisant pour faire la jointure que tu veux faire.
      Maintenant le problème de l'insertion c'est autre chose. Quels sont tes ordres INSERT?
      Et puis au niveau de la démarche, teste d'abord en SQL, et si ça fonctionne passe à PHP.


      • Partager sur Facebook
      • Partager sur Twitter
        8 janvier 2011 à 23:53:20

        Citation : sicilien007

        b
        De plus, pour moi, ta BD est mal construite.
        Enlève les bapteme_ID, ... de la table paroissiens.
        Dans la table inscriptions tu as paroissien_ID, ce sera suffisant pour faire la jointure que tu veux faire.



        +1, tu as insctiption_intitule et paroissien_id, ça suffit, pas besoin de se répéter.
        • Partager sur Facebook
        • Partager sur Twitter

        Script permettant de mettre à jour les FOREIGN KEY

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown