IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

Liaison de table


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Developpeur
    Inscrit en
    Novembre 2011
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Developpeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 196
    Points : 159
    Points
    159
    Par défaut Liaison de table
    Bonjour à tous,

    J'ai vraiment besoin d'aide, j'ai cherché mais pas trouvé.
    Pour être le plus clair possible :
    J'ai une table client (ID, Nom, Ville)
    J'ai une table ville (liste des villes)
    Je souhaiterais créer une liste déroulante dans ma table client avec en lien la table ville (pour le champ ville de la table client)
    Je traite uniquement sur Phymyadmin.
    J'ai essayé les ENUM et SET mais rien à faire.

    Pouvez vous m'aider ?

    Merci par avance

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il faut que tes tables soient Innodb, que tu aies une relation entre les deux clefs et que tu indiques la "colonne descriptive" dans la vue relationelle de ta table de réference.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre habitué
    Homme Profil pro
    Developpeur
    Inscrit en
    Novembre 2011
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Developpeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 196
    Points : 159
    Points
    159
    Par défaut Re
    Bonjour et merci pour ta réponse.

    Au moins je suis fixé, cela est possible.

    Je vais essayé de trouvé la solution et la manip, dans le cas contraire je me permettrai de revenir.

    Merci encore

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    La manipulation je te l'ai indiquée donc ça ne devrait pas être trop difficile à trouver
    De manière plus détaillée :
    - pour chaque table, dans l'onglet "opération" verifier que le moteur de stockage est "Innodb"
    - dans la table contenant la clef étrangère, onglet "structure"
    - dans le menu "index", ajouter un index de type "index" sur la clef étrangère
    - dans le menu "vue relationnelle", renseigner la colonne de la table de réference en "Contrainte de clé étrangère" pour la colonne de la table
    - dans la table de référence, onglet "Structure", menu "vue relationnelle", indiquer la colonne qui doit apparaitre dans la liste de choix dans "Colonne descriptive"
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre habitué
    Homme Profil pro
    Developpeur
    Inscrit en
    Novembre 2011
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Developpeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 196
    Points : 159
    Points
    159
    Par défaut re
    Merci pour tes explication.
    J'ai passé toutes mes tables en "Innodb" et créer un index
    il me reste ces deux étapes sur lesquelles je bataille :

    - dans le menu "vue relationnelle", renseigner la colonne de la table de réference en "Contrainte de clé étrangère" pour la colonne de la table
    - dans la table de référence, onglet "Structure", menu "vue relationnelle", indiquer la colonne qui doit apparaitre dans la liste de choix dans "Colonne descriptive"

    Je vais y arriver , je l'espère.

    Merci

  6. #6
    Membre habitué
    Homme Profil pro
    Developpeur
    Inscrit en
    Novembre 2011
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Developpeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 196
    Points : 159
    Points
    159
    Par défaut re
    Décidément je n'y arrives pas, je vais mettre tous les éléments :

    Une base de données "travail" avec 2 tables, "contact" et "message".

    Ci dessous le code de la BDD :

    Code : 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
    -- Structure de la table `contact`
    --
     
    CREATE TABLE IF NOT EXISTS `contact` (
      `id` int(20) NOT NULL AUTO_INCREMENT,
      `Date` date NOT NULL,
      `civilite` enum('monsieur','madame','Mademoiselle') NOT NULL,
      `nom` varchar(255) NOT NULL,
      `adresse` varchar(100) NOT NULL,
      `cp` varchar(10) NOT NULL,
      `ville` varchar(500) NOT NULL,
      `telephone` varchar(200) DEFAULT NULL,
      `web` varchar(500) NOT NULL,
      `commentaires` varchar(10) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `messages`
    --
     
    CREATE TABLE IF NOT EXISTS `messages` (
      `id` int(20) NOT NULL AUTO_INCREMENT,
      `contact` varchar(200) DEFAULT NULL,
      `message` text NOT NULL,
      `date` date NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
    Mes BDD sont biens en InnoDB.

    Je souhaite avoir une liste déroulante (sous phpmyadmin)
    Je créer des contacts dans ma table contact
    Je souhaiterai récupérer tous les contacts en liste déroulante dans le champ "contact" de ma table "messages"

    Dans ma table contact je créer un nouvelle index avec pour type d'index "index"

    Lorsque je vais dans la vue relationnelle je n'ai que l'id qui se charge et je ne peux rien faire d'autres.

    J'ai beau tourner la problématique dans tous les sens rien à faire.

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Dans la table "message" ce n'est pas une colonne varchar "contact" que tu dois avoir mais une colonne int "contact_id".
    Tu ajoutes ensuite un INDEX sur cette colonne "contact_id".
    Et dans vue relationnelle tu indiques la colonne contact.id comme "contrainte de clef étrangère" pour cette colonne "contact_id"
    Et pour finir dans vue relationnelle pour la table contact, tu mets "nom" comme "colonne descriptive"
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Membre habitué
    Homme Profil pro
    Developpeur
    Inscrit en
    Novembre 2011
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Developpeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 196
    Points : 159
    Points
    159
    Par défaut re
    Encore merci pour ton aide mais rien à faire.

    J'essai de trouver de mon côté pour bien comprendre et je me permettrai de revenir vers toi avant de saturé.

  9. #9
    Membre habitué
    Homme Profil pro
    Developpeur
    Inscrit en
    Novembre 2011
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Developpeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 196
    Points : 159
    Points
    159
    Par défaut re
    Bonjour Sabotage,

    Cela ne marches pas.
    Puis je te mettre un dossier zip avec des codes sources et des captures d'écrans ?
    Je peux refaire une base avec des noms totalement différents pour éviter les erreurs de compréhension.

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il y a une étape que tu n'as pas réussi à faire ou que tu doutes avoir fait correctement ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre habitué
    Homme Profil pro
    Developpeur
    Inscrit en
    Novembre 2011
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Developpeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 196
    Points : 159
    Points
    159
    Par défaut re
    Je pense tout avoir fait correctement.
    Je suis sur PMA v4.1.4
    J'ai essayé les relations dans structure>vue relationnel et concepteur

  12. #12
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Redonne un DUMP de tes deux tables maintenant.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    Membre habitué
    Homme Profil pro
    Developpeur
    Inscrit en
    Novembre 2011
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Developpeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 196
    Points : 159
    Points
    159
    Par défaut re
    Code : 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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    -- phpMyAdmin SQL Dump
    -- version 4.1.4
    -- http://www.phpmyadmin.net
    --
    -- Client :  127.0.0.1
    -- Généré le :  Mar 30 Juin 2015 à 16:04
    -- Version du serveur :  5.6.15-log
    -- Version de PHP :  5.4.24
     
    SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
    SET time_zone = "+00:00";
     
     
    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    /*!40101 SET NAMES utf8 */;
     
    --
    -- Base de données :  `travail`
    --
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `contact`
    --
     
    CREATE TABLE IF NOT EXISTS `contact` (
      `id` int(20) NOT NULL AUTO_INCREMENT,
      `Date` date NOT NULL,
      `civilite` enum('monsieur','madame','Mademoiselle') NOT NULL,
      `nom` varchar(255) NOT NULL,
      `adresse` varchar(100) NOT NULL,
      `cp` varchar(10) NOT NULL,
      `ville` varchar(500) NOT NULL,
      `telephone` varchar(200) DEFAULT NULL,
      `web` varchar(500) NOT NULL,
      `commentaires` varchar(10) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `messages`
    --
     
    CREATE TABLE IF NOT EXISTS `messages` (
      `id` int(20) NOT NULL AUTO_INCREMENT,
      `contact` int(200) DEFAULT NULL,
      `message` text NOT NULL,
      `date` date NOT NULL,
      PRIMARY KEY (`id`),
      KEY `contact` (`contact`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
     
    --
    -- Contraintes pour les tables exportées
    --
     
    --
    -- Contraintes pour la table `messages`
    --
    ALTER TABLE `messages`
      ADD CONSTRAINT `messages_ibfk_1` FOREIGN KEY (`contact`) REFERENCES `contact` (`id`);
     
    /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
    /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
    /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

  14. #14
    Futur Membre du Club Avatar de proraf
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par sdispro Voir le message
    Code : 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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    -- phpMyAdmin SQL Dump
    -- version 4.1.4
    -- http://www.phpmyadmin.net
    --
    -- Client :  127.0.0.1
    -- Généré le :  Mar 30 Juin 2015 à 16:04
    -- Version du serveur :  5.6.15-log
    -- Version de PHP :  5.4.24
     
    SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
    SET time_zone = "+00:00";
     
     
    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    /*!40101 SET NAMES utf8 */;
     
    --
    -- Base de données :  `travail`
    --
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `contact`
    --
     
    CREATE TABLE IF NOT EXISTS `contact` (
      `id` int(20) NOT NULL AUTO_INCREMENT,
      `Date` date NOT NULL,
      `civilite` enum('monsieur','madame','Mademoiselle') NOT NULL,
      `nom` varchar(255) NOT NULL,
      `adresse` varchar(100) NOT NULL,
      `cp` varchar(10) NOT NULL,
      `ville` varchar(500) NOT NULL,
      `telephone` varchar(200) DEFAULT NULL,
      `web` varchar(500) NOT NULL,
      `commentaires` varchar(10) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `messages`
    --
     
    CREATE TABLE IF NOT EXISTS `messages` (
      `id` int(20) NOT NULL AUTO_INCREMENT,
      `contact` int(200) DEFAULT NULL,
      `message` text NOT NULL,
      `date` date NOT NULL,
      PRIMARY KEY (`id`),
      KEY `contact` (`contact`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
     
    --
    -- Contraintes pour les tables exportées
    --
     
    --
    -- Contraintes pour la table `messages`
    --
    ALTER TABLE `messages`
      ADD CONSTRAINT `messages_ibfk_1` FOREIGN KEY (`contact`) REFERENCES `contact` (`id`);
     
    /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
    /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
    /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

    ###################################################################
    ouvrir le fichier (config.inc.php) et ajouter ces lignes :
    /*
    * phpMyAdmin configuration storage settings.
    */

    /* User used to manipulate with storage */
    // $cfg['Servers'][$i]['controlhost'] = '';
    // $cfg['Servers'][$i]['controluser'] = 'pma';
    // $cfg['Servers'][$i]['controlpass'] = 'pmapass';

    /* Storage database and tables */
    $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
    $cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
    $cfg['Servers'][$i]['relation'] = 'pma__relation';
    $cfg['Servers'][$i]['table_info'] = 'pma__table_info';
    $cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
    $cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
    $cfg['Servers'][$i]['column_info'] = 'pma__column_info';
    $cfg['Servers'][$i]['history'] = 'pma__history';
    $cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
    $cfg['Servers'][$i]['tracking'] = 'pma__tracking';
    $cfg['Servers'][$i]['designer_coords'] = 'pma__designer_coords';
    $cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
    $cfg['Servers'][$i]['recent'] = 'pma__recent';

  15. #15
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Je ne vois pas bien en quoi il est nécessaire de modifier la config de PhpMyAdmin pour faire la liaison entre deux tables
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

Discussions similaires

  1. Requête : Liaison de table
    Par ghan77 dans le forum Bases de données
    Réponses: 5
    Dernier message: 09/12/2005, 15h45
  2. Liaison entre tables
    Par Thierry69800 dans le forum Access
    Réponses: 1
    Dernier message: 20/11/2005, 23h19
  3. [données externes] liaison de tables
    Par tiptop dans le forum Access
    Réponses: 9
    Dernier message: 21/10/2005, 17h57
  4. Problèmes de liaisons entre tables ...
    Par Mangun dans le forum Access
    Réponses: 2
    Dernier message: 28/09/2005, 11h35
  5. liaison deux tables unilatéral
    Par atunam dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 15/04/2004, 22h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo