うーん、これを達成する方法については、オンラインで利用できる例が必要だと思います。それらのいくつかは、階層データを格納するための新しい方法についてさえ話しているかもしれません、そしてあなたは読みが面白いと思うでしょう。
とにかく、再帰に基づくこのコードスニペットは、HTMLの実現に役立つ可能性があります。
<?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
?>
お役に立てば幸いです。