Lo primero que debes hacer es crear las matrices y llenarlas:
Código PHP:
$categorias = $niveles = array();
$_bd_->_sql_consulta("SELECT * FROM ".prefijo."categorias ORDER BY id_padre, nombre", "simple");
while( $fila = $_bd_->_sql_fetch_array()) {
$id = $fila['id'];
$id_padre = $fila['id_padre'];
$categorias[$id] = $fila['nombre'];
// Si no existe el indice, lo creamos
if(!isset($niveles[$id_padre]))
$niveles[$id_padre] = array();
// Agregamos el ID de categoria en el nivel correspondiente
$niveles[$id_padre][] = $id;
}
Despues de eso ya puedes llamar a la funcion, incluyendo formatos html si lo deseas:
Código PHP:
function ver_categorias($padre) {
global $categorias, $niveles;
echo '<ul>';
foreach($niveles[$padre] as $cat) {
echo '<li>' . $categorias[$cat];
if(isset($niveles[$cat]))
ver_categorias($cat);
echo '</li>';
}
echo '</ul>';
}
ver_categorias(0); // Mostrar todas las categorias