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 :

hiérarchiser les données d'un array issu d'une requête


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 12
    Par défaut hiérarchiser les données d'un array issu d'une requête
    Bonjour,

    J'ai une table contenant le menu de mon futur site.
    La table contient les données suivantes :

    tid = id du terme
    vid = id du vocabulaire, ici 1 à chaque fois ce n'est pas utile pour la question
    hid = indication de hiérarchie. Par exemple, "Légumes" est l'enfant du parent "Entrées" car le hid de légumes = le tid d'entrées.
    poids = juste pour classer

    Mon but est de faire un affichage hiérarchisé, mais j'en suis totalement incapable J'ai pourtant passé quelques heures dessus...

    L'affichage serait de ce type :
    Entrées
    --Salades
    --Feuilletés
    --Légumes
    Plats
    --Fromage
    --Viande
    --Volaille

    Deux infos importantes : il se peut par la suite qu'il y ait un enfant d'enfant.
    Exemple :
    Plats
    --Fromage
    --Viande
    --Volaille
    ----Poulet
    ----Canard
    ----Pingouin

    Comment construire cette hiérarchie ? J'ai commencé par faire une requête listant toutes les données de la table d'un coup, j'imagine qu'il faut ensuite trier les array en php ?
    Je voudrais que ce système ne génère pas 50 requêtes SQL mais si c'est la seule possibilité ce n'est pas grave je mettrai tout en cache.

    Un grand merci à vous

    PS : voici la table :
    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
    -- phpMyAdmin SQL Dump
    -- version 3.1.3.1
    -- http://www.phpmyadmin.net
    --
    -- Serveur: localhost
    -- Généré le : Ven 24 Juillet 2009 à 10:11
    -- Version du serveur: 5.1.33
    -- Version de PHP: 5.2.9-2
     
    SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
     
    --
    -- Base de données: `monsite`
    --
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `taxonomie_data`
    --
     
    CREATE TABLE IF NOT EXISTS `taxonomie_data` (
      `tid` tinyint(4) NOT NULL AUTO_INCREMENT,
      `vid` tinyint(4) NOT NULL,
      `hid` tinyint(4) NOT NULL,
      `nom` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
      `description` text COLLATE utf8_unicode_ci NOT NULL,
      `poids` tinyint(4) NOT NULL,
      PRIMARY KEY (`tid`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=9 ;
     
    --
    -- Contenu de la table `taxonomie_data`
    --
     
    INSERT INTO `taxonomie_data` (`tid`, `vid`, `hid`, `nom`, `description`, `poids`) VALUES
    (1, 1, 0, 'Entrées', 'Recettes d''entrées.', 1),
    (2, 1, 0, 'Plats', 'Recettes de plats.', 2),
    (3, 1, 1, 'Salades', 'Recettes de salade.', 1),
    (4, 1, 1, 'Feuilletés', '', 2),
    (5, 1, 1, 'Légumes', '', 3),
    (6, 1, 2, 'Fromage', '', 4),
    (7, 1, 2, 'Viande', '', 1),
    (8, 1, 2, 'Volaille', '', 2);

  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
    Par défaut
    Tu peux utiliser la representation intervallaire
    http://sqlpro.developpez.com/cours/arborescence/

    Sinon il faut utiliser la recursivité, soit avec des requetes, soit en parcourant ton tableau.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 167
    Par défaut
    Déjà, je trouve dommage que tu n'ais qu'une seule table pour tout enregistrer. Ce serait peut être plus simple si tu faisais par exemple une table "mère" avec "Entrée, Plats", une table "fille" avec "Salades, Feuilletés, Légumes, etc".
    Dans ta table fille, tu index un champ avec l'id de la ligne de la table mère correspondant.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 12
    Par défaut
    Bonjour,

    Merci. Concernant la séparation des tables, qu'est ce que ça change ? Quel est l'intérêt ? (afin que je puisse comprendre)
    Il faut savoir que cette table est déjà une division car une autre table contient les données de hiérarchie 0.
    Cette table indiquée plus haut correspond au vocabulaire/parent Recettes mais il y en a d'autres.

Discussions similaires

  1. [MySQL] Récupération données d'un formulaire issues d'une requête et checkbox
    Par crg227 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 14/03/2013, 12h10
  2. Tansférer les données d'un array vers une listview
    Par beegees dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 21/05/2009, 19h42
  3. Exporter les données issues d'une requête vers un doc Word
    Par sebpreps dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 23/05/2008, 17h00
  4. Réponses: 7
    Dernier message: 22/05/2007, 15h35
  5. [cr 8.5] comment exploiter les données d'un "array"
    Par kikidrome dans le forum SAP Crystal Reports
    Réponses: 12
    Dernier message: 09/06/2005, 14h03

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