Điều này đặc biệt cho hai cấp độ sâu. Phương pháp được đề xuất nên sử dụng nhiều hơn là sử dụng cấu trúc bảng được tối ưu hóa cho truyền tải, như http://articles.sitepoint.com/article/hierarchical-data-database/2 (được chỉ ra ở nơi khác) hoặc để kéo dữ liệu bạn cần và đẩy nó vào từ điển (mảng kết hợp) và truy vấn nó theo cách đó.
<?php
$query = <<<EOT
SELECT
parent.name as parent_name,
child.name as child_name,
FROM
items child
INNER JOIN
items parent
ON
child.parent_id = parent.id
ORDER BY
parent.name
EOT;
$result = mysql_query($query) or die('Failure!');
echo "<ul id=\"catmenu\">";
$last_parent = '';
while($row = mysql_fetch_array($result)){
// If this is a new category, start a new one
if($last_parent != $row['parent_name']){
// Unless this is the first item, close the last category
if($last_parent != ''){
echo "</ul></li>";
}
$last_parent = $row['parent_name'];
echo "<li class=\"menulist\">{$row['parent_name']}<ul>";
}
echo "<li>{$row['child_name']}</li>";
}
// If we actually had items, close the "category"
if($last_parent != ''){
echo "</ul></li>";
}
echo "</ul>";
?>