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 :

Etendre la largeur d'un tuple mysql [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Développeur Web
    Inscrit en
    Novembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Etendre la largeur d'un tuple mysql
    Bonjour,

    Voila j'aimerai savoir s'il est possible d'étendre un résultat de mysql sur la largeur.
    Le but est de pouvoir ajouter dynamiquement des attributs sur un produit sans modifier la structure de la base de données.

    Je m'explique j'ai un table produit , attribut et attributProduit:

    produit :
    idProduit
    nom

    attribut :
    idAttribut
    nom
    type

    attributProduit :
    idProduit
    idAttribut
    valeur


    En gros j'aimerai qu'avec une requête mysql étendre le nombre de colonne d'un produit.

    résultats :
    idProduit , nom , description , data , lienYoutube

    Les solutions que j'ai trouvé sont de traiter le résultat en php pour l'unifier

    J’exécute la requête :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                SELECT * , p.nom as nomProduit 
                FROM produit p
                LEFT OUTER JOIN categorie c ON c.idCategorie = p.idCategorie
                LEFT OUTER JOIN attributProduit ap ON ap.idProduit = p.idProduit
                LEFT OUTER JOIN attribut a ON a.idAttribut = ap.idAttribut
                WHERE c.idCategorie = '$idCategorie' AND p.etat = '0'

    Puis je lance une fonction php qui m'unifie tout ces résultats :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
               $produit->unifier("idProduit , nomProduit , attribut[idAttribut , idProduit , nom , type , valeur]");
    Ce qui va avoir pour effet de me créer une liste d'objets produits avec une propriété attribut regroupant sous forme de tableau tout les attributs de ce produit.

    Voila le problème est que cette solution est un peu lourde.
    Voila j'attends avec impatiente vos retours , merci d'avance pour votre aide précieuse.

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Évitez de relancer la guerre des étoiles !
    Dans votre cas, le SELECT * ramène toutes les colonnes de toutes les tables de la requête donc p.nom y est déjà ! Vous ramenez aussi toutes les clés étrangères donc les mêmes données plusieurs fois.

    En gros j'aimerai qu'avec une requête mysql étendre le nombre de colonne d'un produit.

    résultats :
    idProduit , nom , description , data , lienYoutube
    Je suppose qu'ici, desciption, data et lienYoutube sont des attributs du produit ?
    Si vous ne voulez que les produits qui contiennent ces attributs, vous pouvez procéder ainsi :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT p.idProduit, p.nom AS nomProduit	
    FROM produit p
    INNER JOIN categorie c ON c.idCategorie = p.idCategorie
    INNER JOIN attributProduit ap ON ap1.idProduit = p.idProduit
    	INNER JOIN attribut a ON a.idAttribut = ap.idAttribut
    WHERE c.idCategorie = '$idCategorie' 
    	AND p.etat = '0'
    	AND a.nom IN ('description', 'data', 'lienYoutube')
    GROUP BY p.idProduit, p.nomProduit
    HAVING COUNT(a.idAttribut) = 3
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre confirmé
    Avatar de tse_jc
    Homme Profil pro
    Data Solutions
    Inscrit en
    Août 2010
    Messages
    287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Data Solutions
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2010
    Messages : 287
    Points : 597
    Points
    597
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    Le but est de pouvoir ajouter dynamiquement des attributs sur un produit sans modifier la structure de la base de données.
    Vous devriez envisager la modélisation par méta données Cf. papier de SQLpro.

    Cordialement,

    tse_jc

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par tse_jc Voir le message
    Vous devriez envisager la modélisation par méta données Cf. papier de SQLpro.
    D'après ce que j'ai compris, c'est déjà ce qui est modélisé !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Développeur Web
    Inscrit en
    Novembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Merci
    Merci pour vos réponses, j'ai finalement résolut mon problème.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Etendre un background à la largeur d'un div
    Par jeanmarc7575 dans le forum Mise en page CSS
    Réponses: 15
    Dernier message: 14/05/2009, 16h10
  2. Stockage d'un tuple en SGBD (MySQL par exemple)
    Par patxi.draks dans le forum Général Python
    Réponses: 2
    Dernier message: 26/11/2007, 16h39
  3. [MySQL] updater un seul tuple a la fois+increment de la cle
    Par kenny49 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 03/07/2006, 12h13
  4. PHP & MySQL : Problème pour compter nombre de tuples ?
    Par ExSter dans le forum Requêtes
    Réponses: 6
    Dernier message: 09/05/2006, 23h03
  5. [MySQL] Supprimer les tuples ...
    Par Seth77 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 12/02/2006, 18h10

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