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 :

Lier une table "horizontale" et une table "verticale"


Sujet :

PHP & Base de données

  1. #1
    Membre habitué Avatar de php_de_travers
    Inscrit en
    Juin 2004
    Messages
    460
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 460
    Points : 190
    Points
    190
    Par défaut Lier une table "horizontale" et une table "verticale"
    Cela fait un bon moment que je recherche cette façon de travailler.
    Et elle est mise en oeuvre dans le script Aedituus (! doc vieille mais script actualisé en 07/2009).

    En clair : 2 tables
    ae_users :
    organisation horizontale mais seulement 11 champs =>
    id - pseudo - mdp - email.....

    ae_user_vars
    organisation verticale avec seulement 3 champs : user_id - name - value
    exemple 1° enregistrement :
    user_id = 1
    name = age
    value = 18

    exemple 2° enregistrement :
    user_id = 1
    name = sexe
    value = f

    exemple 3° enregistrement :
    user_id = 1
    name = pays
    value = fr

    etc... avec encore une infinité de caractéristiques possibles pour le user_id = 1
    ET une infinité de users : user_id = 2 ... user_id = 99999999

    Autre info, les champs sont écrits en clair dans un fichiers fields.php
    qui contient :

    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
    return array(
     
        array(
            'name' => array(
                'fr' => 'Age',
                'en' => 'Age'
            ),
            'key' => 'age',
            'type' => 'text',
            'min_size' => 5,
            'max_size' => 25,
            'validator' => 'int',
            'required' => true,
            'default' => 18
        ),
     
        array(
            'name' => array(
                'fr' => 'Sexe',
                'en' => 'Sex'
            ),
            'key' => 'sexe',
            'type' => 'text',
            'min_size' => 5,
            'max_size' => 5,
            'validator' => 'int',
            'required' => false,
            'default' => ''
        ),
    Le script étant trop structuré pour moi, j'aimerais savoir comment travailler dans cet esprit pour éviter de réaliser des tables démesurément horizontales avec tous les champs en dur.

    Idem pour les inserts, updates et selects sur ce genre configuration.

  2. #2
    Membre habitué Avatar de php_de_travers
    Inscrit en
    Juin 2004
    Messages
    460
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 460
    Points : 190
    Points
    190
    Par défaut
    Pour faire plus court que dans mon précédent message, je reformule :

    comment travailler sur une BDD (FORMULAIRE + select - insert - update - delete) avec plusieurs tables en relation

    1 table principale qui liste les joueurs
    id - nom - prenom - date de naissance
    1 pro bob 12/02/1997
    2 lou marcel 13/03/1998

    1 table secondaire qui liste les caractéristiques des joueurs, de manière "verticale"
    id_joueur - intitule_champ - valeur_champ
    1 email pro.bob@mon-club.fr
    1 telephone 06 01 02 03 04 05
    2 email lou.marcel@mon-club.fr
    1 classe collège


    Je tourne autour du pot depuis des mois et on m'a déjà répondu que je pouvais créer des tables très horizontales avec 50-100 champs. Ce qui ne me semble pas top.

    PS : ce genre de config existe dans les boutiques en ligne où une table sert pour un produit et une autre pour les caractéristiques.

  3. #3
    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 quel est ton problème : à partir du moment où tu connais les données à entrer dans ta table secondaire, il suffit de faire autant d'insert/update qu'il ya de champs... Peut-être pourrais-tu donner un exemple de ce que tu souhaites faire et de ce qui ne fonctionne pas.

  4. #4
    Membre habitué Avatar de php_de_travers
    Inscrit en
    Juin 2004
    Messages
    460
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 460
    Points : 190
    Points
    190
    Par défaut
    Citation Envoyé par Celira Voir le message
    Peut-être pourrais-tu donner un exemple de ce que tu souhaites faire et de ce qui ne fonctionne pas.
    Ce qui ne marche pas, c'est la conception intellectuelle...

    Je ne vois pas trop comment créer mon formulaire pour faire des UPDATE ou des INSERT, par exemple.

    Connais-tu des exemples (simples) de ce type de structure qui est assez répandue dans les boutiques notamment ?
    Ou un tuto ?
    Rien trouvé sur le web comme doc.

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/11/2014, 16h44
  2. Réponses: 3
    Dernier message: 14/08/2012, 10h24
  3. Réponses: 12
    Dernier message: 08/08/2008, 11h03
  4. [vbnet 1.1]Inserer deux simple quote sans texte dans une db
    Par ChristopheOce dans le forum Windows Forms
    Réponses: 8
    Dernier message: 15/03/2007, 08h51

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