Yo lo haría con una función recursiva...
La idea sería algo así
Código PHP:
function mostrarMenu($nivel, $correlativo, $dbf) {
$sql = "SELECT * FROM `menu` WHERE `nivel`=$nivel AND `correlativo`=$correlativo";
$resultado = $dbf->getConsulta($sql);
echo '<ul>';
while($arr = mysql_fetch_array($resultado)) {
echo '<li>'.$arr['nombremenu'];
mostrarMenu($nivel+1, $arr['idmenu'], $dbf);
echo '</li>';
}
echo '</ul>';
}
No sé si funciona, pero lo importante es q veas el concepto :)
La idea es ir recorriendo el "nivel 0" (o 1, depende como sea para ti!). Y por cada elemento de estos, recorrer todos sus hijos. Por cada hijo, recorrer todos sus hijos... así hasta el infinito!
Yo reformaria la tabla a algo así
idmenu | nombremenu | padre | url
No entiendo pq necesitas "nivel" y "correlativo". Al ser padre 0 sabes q es "primer nivel", sino, sabes q depende de otro (por ejemplo!)
Y se quedaria más sencillo el código:
Código PHP:
function mostrarMenu($padre $dbf) {
$sql = "SELECT * FROM `menu` WHERE `padre`=$padre";
$resultado = $dbf->getConsulta($sql);
echo '<ul>';
while($arr = mysql_fetch_array($resultado)) {
echo '<li>'.$arr['nombremenu'];
mostrarMenu($arr['idmenu'], $dbf);
echo '</li>';
}
echo '</ul>';
}
Pero, para gustos, colores ;)