यह विशेष रूप से दो स्तरों के लिए गहरा है। ट्रैवर्सल के लिए एक अनुकूलित तालिका संरचना का उपयोग करने के लिए अनुशंसित दृष्टिकोण अधिक होना चाहिए, जैसे http://articles.sitepoint.com/article/hierarchical-data-database/2 (कहीं और इंगित किया गया है) या अपनी जरूरत के डेटा को खींचने के लिए और इसे एक शब्दकोश (एसोसिएटिव एरे) में धकेलें और इसे इस तरह से क्वेरी करें।
<?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>";
?>