Rất tiếc, tôi tin rằng phải có các ví dụ trực tuyến về cách bạn có thể thực hiện điều này. Một số người trong số họ thậm chí có thể nói về những cách mới để lưu trữ dữ liệu phân cấp và bạn sẽ thấy các bài đọc thú vị.
Dù sao đi nữa, đoạn mã này, dựa trên đệ quy, có thể giúp bạn đạt được HTML của mình.
<?php
// recursive function to generate the category HTML
function generateTree ($parent) {
global $arrPCat, $arrCat;
if (array_key_exists($parent, $arrPCat)) {
echo '<ul' . ($parent == 0 ? ' class="tree"' : '') . '>';
foreach ($arrPCat[$parent] as $arrC) {
echo '<li>' . $arrC['name'] . '</li>';
generateTree($arrC['id']);
}
echo '</ul>';
}
}
// read all categories from the DB
$rs = mysql_query('SELECT `cl`.`id`, `cl`.`name`, `c`.`position`, IFNULL(`c`.`parent_id`, 0) AS `parent_id`
FROM `categories_locale` `cl`
LEFT JOIN `categories` `c` ON `cl`.`id` = `c`.`id`
ORDER BY `c`.`parent_id` , `c`.`position`');
while ($r = mysql_fetch_assoc($rs)) {
// store parent and its children into the $arrPCat Array
$arrPCat[$r['parent_id']][] = Array (
'id' => $r['id'],
'name' => $r['name']
);
}
generateTree (0); // now generate the HTML for the category tree
?>
Hy vọng nó sẽ hữu ích!