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

Algorithmes et structures de données Discussion :

[Algo/PHP] Créer une arborescence de rubrique


Sujet :

Algorithmes et structures de données

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 17
    Points : 9
    Points
    9
    Par défaut [Algo/PHP] Créer une arborescence de rubrique
    Bonjour à tous !

    Voilà j'ai un petit problème d'algo... je planche dessus depuis quelques jours sans arriver au résultat que j'attends...

    Je suis en train de créer un site web, avec une sorte de mini CMS (content management system, ou système de gestion de contenu).
    J'ai donc des rubriques, des articles etc... stocké dans une BDD MySQL.

    Ma rubrique possède ces champs :
    - id_rubrique (identifiant de ma rubrique)
    - id_parent (identifiant de la rubrique mère, si elle n'en a pas, on met la valeur 0)
    - titre
    - description
    - contenu

    Donc voici ce que je cherche a faire :
    J'essais d'écrire un algo qui me permettrait de créer une sorte d'arbre (je dis une sorte, car en PHP, les arbres faut un peu les bricoler soit même) de mes rubriques à partir des éléments "id_rubrique" et "id_parent" (théoriquement, ces champs devraient suffire, en tout cas la BDD de SPIP utilise principalement ça).

    Mon problème est que je voulais faire une fonction récursive (car le nombre "d'étage" de l'arborescence peut varier...), mais ce n'est pas mon point fort (je n'y arrive pas)...

    Merci à ceux qui pourront m'éclairer ! ^^

    David.

  2. #2
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Que cherches tu à faire , concretement ?

    Parce que, pour moi, tu as déjà tout:

    - La stucture de données = les enregistrements de ta table SQL
    - Pour trouver l'id du parent: champ.id_parent
    - Pour trouver les id des enfants: SELECT id_rubrique FROM zetable WHERE id_parent=?
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    Effectivement, j'ai tout ce qu'il me faut, sauf l'algorithme pour parcourir dynamiquement ma table.

    Voici un exemple d'arborescence de rubriques (sans aucun rapport avec mes vrais rubriques) :
    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
     
    - Windows
    	- Vidéos
    		- Pinnacle Studio
    		- Windows Movie Maker
    	- Photo
    		- Paint
    		- Adobe Photoshop
    		- Corel Paint Shop Pro
    - Mac
    	- Multimedia
    		- Vidéos
    			- iTunes
    			- VLC
    			- Media Player
    		- Son
    			- GarageBand
    			- Logic Studio
    			- Pro Tools
    			- Audacity
    - Linux
    	- Ubuntu
    	- Debian
    	- Mandriva
    Pour trouver les rubriques enfants de telle ou telle rubrique, je sais faire, par contre je bloque sur l'algorithme qui me permetrait de re-parcourir chaque élément fils de mes éléments fils (selon le nombre d'imbrications).

    J'ai essayer un algo qui ressemble grossierement à ca mais ca ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    POUR chaque rubrique
    	SI rubrique a des enfants ALORS
    		//Que faire ici ?!?
    		//Refaire une boucle pour trouver chaque enfant
    			//Puis en refaire une pour trouver les enfants a nouveau
    				//puis encore une ?
    	FINSI
    FINPOUR
    GROS PROBLEME : Je dois faire dans mon code autant de boucle que j'ai d'imbrication de rubrique... Mais que se passe-t-il si j'ai une dizaine ou une vingtaine d'imbrication ? (ca n'arrivera surement jamais ! mais il faut que le code puisse s'adapter a toutes les situations !)

    J'espere que vous avez compris mon probleme...

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par dave260888 Voir le message
    GROS PROBLEME : Je dois faire dans mon code autant de boucle que j'ai d'imbrication de rubrique... Mais que se passe-t-il si j'ai une dizaine ou une vingtaine d'imbrication ? (ca n'arrivera surement jamais ! mais il faut que le code puisse s'adapter a toutes les situations !)
    Ah. Il faut faire un appel récursif dans ta boucle. Je ne maitrise pas du tout le PHP (), alors excuses les eventuelles erreurs dans le code suivant:
    Code PHP : 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
     
    function ParcourirEnfants($idparent) {
     
      $sql = 'SELECT * FROM zetable WHERE WHERE id_parent='.$idparent;
      $req = mysql_query($sql)
     
      while($data = mysql_fetch_assoc($req)) {
     
        // on fait quelequechose ici avec les données
     
        // on fait un appel recursif pour avoir les enfants
        ParcourirEnfants($data['id_rubrique']);
      }
    }
     
    ParcourirEnfants(0)
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Par contre si tu as 10 000 rubriques tu as des chances de te prendre un timeout peut-être.

    Mais normalement ça ira a priori

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    Merci

    Je teste et je reviendrais vers vous

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    Testé et approuvé

    Merci pour ton aide pseudocode

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

Discussions similaires

  1. [XSLT]Algo pour créer une arborescence
    Par Yudala dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 08/03/2007, 14h49
  2. Créer une arborescence
    Par walden dans le forum IHM
    Réponses: 12
    Dernier message: 30/06/2006, 19h55
  3. Créer une arborescence avec XSL
    Par kobe dans le forum XSL/XSLT/XPATH
    Réponses: 19
    Dernier message: 13/06/2006, 09h54
  4. créer une arborescence windows sous forme d'arbre java
    Par chupachoc dans le forum Composants
    Réponses: 3
    Dernier message: 01/10/2002, 16h48

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