2010-04-14 8 views
2

J'ai regardé les questions connexes pour une question similaire mais je ne voyais pas tout à fait ce dont j'avais besoin, pardon si cela a déjà été répondu . Dans ma base de données j'ai une liste d'enregistrements que je veux représenté à l'utilisateur sous forme de fichiers à l'intérieur d'une structure de dossiers. Donc, pour chaque enregistrement, j'ai une colonne VARCHAR appelée "FolderStructure" que je veux identifier dans la structure du dossier. La série de ces colonnes de chaînes FolderStructure plates créera ma structure arborescente avec les dossiers étant séparés par des barres obliques inverses (naturellement). Je ne voulais pas ajouter une autre table juste pour représenter une structure de dossiers ... Le nom de 'fichier' est stocké dans une colonne séparée de sorte que si la colonne FolderStructure est vide, le fichier est supposé être dans le dossier racine. Quel est le meilleur moyen de transformer une collection de ces enregistrements en une série de balises HTML UL/LI ... où chaque LI représente un fichier et chaque structure de dossier étant une UL incorporée dans son parent?En PHP ... le meilleur moyen de transformer la représentation de chaîne d'une structure de dossiers en tableau imbriqué

Ainsi, par exemple:

fichier - folderStructure

foo -

bar - firstDir

bleu - firstDir/subdir

produirait le code HTML suivant:

<ul> 
<li>foo</li> 

    <ul> 
    <li> bar </li> 
     <ul> 
     <li> blue </li> 
     </ul> 
    </ul> 
</ul> 

Merci

+0

Il peut être utile de publier un petit échantillon de ce à quoi ressemble votre table de base de données. –

Répondre

2

Jetez un oeil à cet article: http://kevin.vanzonneveld.net/techblog/article/convert_anything_to_tree_structures_in_php/ pour un début. Il vous aidera à convertir votre base de données en une structure arborescente en php. Après cela, vous pouvez utiliser la fonction en bas avec quelques modifications ... au lieu de mettre en retrait, faites-la imprimer les tags ul, puis pour chaque élément final, faites-le imprimer dans les étiquettes li. Et en bas, après l'appel récursif, mettez la dernière étiquette ul.

+0

Exactement ce dont j'avais besoin, merci :) –

Questions connexes