Illimité Sous-catégories php et mysql liste li catégories open panier
Question
J'ai les tableaux ci-dessous category
et category_description
en php mysql. ma question est de savoir comment les informations ci-dessous puis-je faire pour créer un nombre illimité de sous-catégories dans une structure ul
de li
. Je l'ai regardé divers exemples sur ce site mais profiter non non merci beaucoup pour votre temps à lire cette question. Je me réjouis de votre réponse
Column Type Null Default
category_id int(11) No
image varchar(255) Yes NULL
parent_id int(11) No 0
top tinyint(1) No
column int(3) No
sort_order int(3) No 0
status tinyint(1) No
date_added datetime No 0000-00-00 00:00:00
date_modified datetime No 0000-00-00 00:00:00
Et les descriptions sont stockées dans ce tableau
Column Type Null
category_id int(11) No
language_id int(11) No
name varchar(255) No
description text No
meta_description varchar(255) No
meta_keyword varchar(255) No
La solution
opencart a le
$this->model_catalog_category->getCategory()
méthode, et vous passez l'identifiant de la catégorie en tant que paramètre, comme
$category = this->model_catalog_category->getCategory(5);
Il gère également la description appropriée se joindre aussi pour que vous ne les avez pas besoin d'accéder directement. Comme @Till Helge Helwig a déjà signalé, vous devez utiliser une fonction récursive si vous voulez construire un arbre de ceux-ci avec toutes les sous-catégories. Un bon endroit pour voir un exemple de ceci est dans le code du module de catégorie réelle. Faites défiler jusqu'au bas du fichier catalog/controller/module/category.php
et vous verrez une fonction récursive qui construit le html pour cela
Autres conseils
Vous avez déjà un parent_id
de colonne. Utiliser pour représenter les relations entre les catégories. Si une catégorie est au niveau de la racine, vous définissez cette colonne à NULL
.
Une autre approche serait une troisième table qui associe des catégories aux sous-catégories. Cela vous permettra de marcher de haut en bas, ainsi que du haut en bas. Dépend de votre application qui vous approche utilisez.
Afin de gérer cette hiérarchie, vous devez écrire quelques fonctions récursives et trouver une bonne représentation en PHP qui peut gérer correctement la hiérarchie de la catégorie.
Une fonction récursive simple à imprimer une sorte de panure ressemblerait à ceci (je suppose dans cet exemple que vous avez une sorte de ORM en place):
function findWayToTop($category, $breadcrumbs = array()) {
$breadcrumbs[] = $this;
$parent = $category->getParent();
if ($parent != null) {
return findWayToTop($parent, $breadcrumbs);
} else {
return $breadcrumbs;
}
}
Si vous n'utilisez pas ORM, le plus simple est d'aller chercher toutes les catégories de la base de données et de les stocker dans un tableau où l'ID est la clé. Ensuite, vous pouvez remplacer les appels de tableau dans le code ci-dessus et il fonctionne aussi bien.