|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : décembre 2004 Messages : 5 ![]() |
Bonjour à tous,
Je suis entrain de restructurer mon site et je cherche un moyen de bien structurer les categories d'articles. Je voudrais pouvoir créer des categories et des sous-categories à l'infini. Par exemple : Categorie1 Sous-Categorie1 Sous-sous-categorie1 Sous-sous-sous-categorie1 Article1 Article2 Sous-sous-sous-categorie2 Article3 Article4 Sous-sous-categorie2 etc... J'aimerais donc qu'on puisse créer autant de sous-catégorie que possible. Les catégories seront indexées dans la base de données. Je comptais donner a chaque categorie (que se soit une categorie ou une sous-sous-categorie) une id. Mais je cherche moyen optimisé de gérer tout ca. Que se soit pour l'ajout de nouvelles catégories ou pour l'affichage. Je pensais a une structure arborescente (ca me semble logique). Mais j'hésite sur la manière de l'implémenter. Je pensais donner a chaque categorie (= sous categorie etc..) un id, sa profondeur (ex :1 pour categorie, 2 pour sous-categorie ect..), et l'id de son pére (la catégorie parente). Pour l'affichage, j'aurai fait ca de manière récursive mais là encore j'hésite dans la manière de l'implémenter, de faire les boucles etc... Tout conseil me sera très utile. Merci d'avance. |
|
|
00
|
|
|
#2 |
|
Membre régulier
![]() Julien SIMONIngénieur systèmes et réseaux Inscription : février 2006 Messages : 100 ![]() |
Bonjour,
Moi ça me rappelle les arbres et le concept père > fils. Je m'explique : On pourrait voir chaque catégorie de manière identique mais en précisant sa catégorie parent qui serait en fait l'identifiant du parent. Exemple : Catégorie : Main Identifiant : 1 Id Parent : NULL Catégorie : Articles Identifiant : 2 Id Parent : 1 Catégorie : Soumis par les visiteurs Identifiant : 3 Id Parent : 2 Ensuite on utilise PHP pour faire la mise en forme en fonction des identifiants. J'espère avoir été assez souple dans mon explication ? |
|
00
|
|
|
#3 |
![]() ![]() Thomas RambaudDéveloppeur Web Inscription : décembre 2007 Messages : 2 140 ![]() |
Créer 2 tables dans ton ODBC (mysql par exemple) :
Une table CATEGORIE(id_cat,nom,description) Une table SOUSCATEGORIE(id_souscat,nom,description,id_cat) id_cat dans la table SOUSCATEGORIE contiendra l'id de la catégorie à laquelle elle est associée. |
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : décembre 2004 Messages : 5 ![]() |
MightyDucks > Je pensais justement faire cette méthode. Je voulais ajouter la profondeur mais enfaites cela ne sert a rien, l'id du pére suffit comme tu le montre dans ton exemple.
Et ton explication est très claire. ThomasR > Je me suis mal exprimé, je voulais pouvoir créer des sous-catégories, des sous-sous-catégories des sous-sous-sous-catégories de plus en plus petites et toutes imbriquées les unes dans les autres, un peu comme un arbre qui s'agrandit. Merci à vous deux pour vos réponses. |
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() |
Sans vouloir être véxant, je te déconseille la solution de ThomasR car top peu évolutive. Par contre je rejoins MightyDucks sur la gestion avec une seule table catégorie dans laquelle tu as l'identifiant du parent. Ca me semble être la manière la plus fiable et la plus courante. C'est sur que si tu as 100 niveaux, ca va poser problème pour la réccursivité (et encore...) mais bon à mon avis tu n'auras aucun souci en terme de performance vu ce que tu demandes.
|
|
|
00
|
|
|
#6 |
|
Membre régulier
![]() Julien SIMONIngénieur systèmes et réseaux Inscription : février 2006 Messages : 100 ![]() |
Ah bah faut que je téléphone à mon ancien profs d'algo, il serait content de voir que pour une fois j'ai été clair dans l'explication d'un algo
|
|
00
|
|
|
#7 |
![]() ![]() Thomas RambaudDéveloppeur Web Inscription : décembre 2007 Messages : 2 140 ![]() |
ha oui donc tu as simplement une table
CATEGORIE(id_cat,nom,description,id_parent) Si id_parent = 0 ou NULL, c'est que la catégorie est de niveau 1. C'est de la récursivité. À partir du moment ou l'on savait qu'il n'y aurait que des catégorie de niveaux 2 ma solution était parfaitement adaptée. |
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : décembre 2004 Messages : 5 ![]() |
Merci à tous.
ThomasR > En effet ta proposition aurait été parfaites si il n'y avait que des categories et des sous-categories. Quand je l'ai lue, j'ai compris que j'avais mal expliqué ce que je voulais faire. A mon avis, la récursivité ne devrait pas etre trop lourde a faire puisque j'irai rarement au delà de 6 niveaux. Après pour afficher l'arborescence des categories parentes d'un article, je regarderai les parents jusqu'a arriver a une categorie avec une id parente nulle. ex : Categorie1 > sous-cat > sous-sous-cat > Article Encore merci a tout le monde, j'avais peur que mon idée de récursivité soit un peu trop "originale" mais je vois que mal de monde a cette idée. |
|
|
00
|
|
|
#9 |
|
Membre régulier
![]() Julien SIMONIngénieur systèmes et réseaux Inscription : février 2006 Messages : 100 ![]() |
Disons que le challenge du moins pour ma part est toujours d'arriver au code ou à la solution la plus performante.
C'est bon de se lancer des défis ! |
|
00
|
Copyright © 2000-2012 - www.developpez.com