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

PHP & Base de données Discussion :

clés étrangères en php


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Inscrit en
    Février 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 118
    Par défaut clés étrangères en php
    comment peut'on faire des clés étrangères en php:
    - seulement avec des jointures .
    - ou y'a un autre moyen ?!!!!

    voici un cas d'utilisation dans mon future application !!!



    informations :
    -j'ai mi les clés primaire en auto-incrément

    -id_sous_texte est une clé étrangère dans la table texte.
    -id_sous_texte est une clé étrangère dans la table LANGUE.
    -id_trad_sous_texte est une clé étrangère dans la table LANGUE.
    -id_trad_sous_texte est une clé étrangère dans la table SOUS_TEXTE.

    question:
    comment je vais faire le select le insert ..... en prenant en concedération les clés primaires "auto-incrément "et étrangères.

    merci d'avance

  2. #2
    Membre très actif
    Homme Profil pro
    Inscrit en
    Février 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 118
    Par défaut
    je pense que je mets comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // cle primaire 
    $id = mysql_insert_id(mysql_query("INSERT INTO texte SET titre_texte = 'texte'")); 
     
    // cle etrangere 
    mysql_query("INSERT INTO sous_texte SET id_texte='".$id."' sous_texte = 'sous texte');
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // cle primaire 
    $id = mysql_query("SELECT id_texte FROM texte WHERE titre_texte = 'texte'"); 
     
    // cle etrangere 
    mysql_query("INSERT INTO sous_texte SET id_texte='".$id."' sous_texte = 'sous texte');

  3. #3
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    comment peut'on faire des clés étrangères en php:
    Ce n'est pas vraiment de "vouloir faire" que tu voulais dire, mais comment accorder une valeur (un identifiant unique) pour un champ auto_increment.

    Effectue plutôt comme ceci :
    Exemple : (je fais court)
    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
    <?php
    $titre = 'Un titre';
    $desc = 'Une description';
    $sous_texte = 'Un sous texte';
     
    // Insertion en 1er les données de la table "texte"
    $insert_texte = "INSERT INTO texte (titre_texte, description_texte, ... etc ...) VALUE('".$titre."', '".$desc."', ... etc ...)";
    mysql_query($insert_texte);
     
    // On récupère au plus tôt la valeur du champ auto_increment
    $id_texte = mysql_insert_id();
     
    // On insert les autres données des autre tables liées (comme "sous_texte")
    $insert_soustexte = "INSERT INTO sous_texte (id_texte, sous_texte) VALUE(".$id_texte.", '".$sous_texte."')";
    mysql_query($insert_soustexte);
    ?>
    ("id_texte" étant la clé étrangère de la table "texte" du champ "id_texte")


    A coté de ça, et sauf erreur, je pense qu'il y un souci de conception si le but est de faire du multi-langue.
    Normalement il ne faut pas mettre de champs linguistiques dans la table principale (comme texte, sous_texte, etc ...), mais créer pour chacune de ces tables une autre table liée à la table "langue".

    Si on pose par exemple les cardinalités qu'il y a sur la donnée "titre_texte" par rapport aux langues, elle serait : 1, n.
    Pour 1 donnée texte on va avoir n titre (n étant le nombre de langue qu'il va avoir).
    Théoriquement cette donnée "titre" ne peu pas rester dans cette table "texte", elle doit sortir.
    Même chose pour la description, etc ... toutes les données linguistiques.


    Par exemple, la table "texte" devrait être divisée en 2 tables, dont une pour les données linguistiques.
    table "texte" : id_texte | annee_texte | ordre_texte | online_texte | date_insert_texte | date_update_texte

    table "texte_langue" : id_texte | id_langue | titre_texte | description_texte | commentaire_texte

    Le principe devrait être le même pour toutes les autres tables ayant du contenu linguistique (même s'il n'y a qu'1 seul champ).
    Table "sous_texte" : id_sous_texte | id_texte
    Table "sous_texte_langue" : id_sous_texte | id_langue | sous_texte | sous_texte_url | commentaire_sous_texte
    (pour le champ "sous_texte_url", cela dépend si l'URL tient compte de la langue ou pas, faut voir).

    Ensuite, ce sont les jointures de tables (table principale / table langue) qui vont permettre de récupérer le bon contenu selon la langue.
    Du coup, il ne faut pas de table "traduction_sous_table".


    En espérant que tout cela correspond à ce que tu recherche à faire.

Discussions similaires

  1. [PostgreSQL] Ecriture de données avec PHP et clés étrangères
    Par Thomas Williamson dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 19/06/2013, 11h22
  2. Réponses: 12
    Dernier message: 30/04/2010, 15h00
  3. Réponses: 6
    Dernier message: 08/11/2008, 15h37
  4. [MySQL] Clés étrangères avec PHP et MySQL
    Par HWICE dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 26/02/2008, 19h26
  5. [Script]prob de clés étrangères
    Par Seb7 dans le forum Langage SQL
    Réponses: 13
    Dernier message: 08/07/2003, 17h37

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