我想应该遵循以下原则(未经测试,必须适应您的需求):
$q = mysql_query("SELECt id, parent_id, name FROM categories");while ($r = mysql_fetch_row($q)) { $names[$r[0]] = $r[2]; $children[$r[0]][] = $r[1];}function render_select($root=0, $level=-1) { global $names, $children; if ($root != 0) echo '<option>' . strrep(' ', $level) . $names[$root] . '</option>'; foreach ($children[$root] as $child) render_select($child, $level+1);}echo '<select>';render_select();echo '</select>';一种更有趣的方法是使用SQL存储过程,但在这种情况下可能会过分地…



