Buen día,
ando bloqueado para crear un menú recursivo utilizando una consulta con los siguientes datos:
el menú que quiero hacer quedaría así:

como ven, los resultados se agruparían por: Año->area->status->cambio->record .
Qué algoritmo me sugieren para crear esta lista ? considerando que:
- los records siempre estarán a 5 niveles
- el record siempre tiene "varios" parent_id... que vendrían siendo: Año->area->status->cambio, de ahí depende como se agrupa en la lista
la verdad no se me ocurre nada... lo único que había hecho fue:
pero como ven es un desmadre que no tiene nada de bonito....
cualquier sugerencia es agradecida.
gracias
ando bloqueado para crear un menú recursivo utilizando una consulta con los siguientes datos:
Código [Seleccionar]
//ejemplo de la primer fila regresada por la consulta sql
Array ( [id] => 12
[year] => 2012
[user_id] => 95
[fecha] => 1340395675
[ger_id] => 2
[ad_id] => 4
[area_especifica] => ghghb
[cambio_id] => 5
[prop_id] => 1
[motivo] => bgb
[antecedentes] => bghb
[objetivos] => bghg
[desc] => bgh
[beneficios] => bgh
[bases] => bgh
[ar_id] => 1
[ar_info] => bg
[afect_amb] =>
[afect_info] => bgh
[partes_id] => 2
[apd_id] => 6
[capac] =>
[capac_info] => bgh
[com_riesgos] =>
[com_info] => bgh
[status] => EN REVISION
[tipo_doc] => 0
[area] => 3 area
[cambio] => trés bien )
el menú que quiero hacer quedaría así:
Código [Seleccionar]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
</head>
<body>
<ul id="grupos">
<li>year
<ul>
<li>area 1
<ul>
<li>status 1
<ul>
<li>cambio 1
<ul>
<li>id 1</li>
<li>id 2</li>
<li>id 3</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>area 2
<ul>
<li>status 2
<ul>
<li>cambio 2
<ul>
<li>id 4</li>
<li>id 5</li>
<li>id 6</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul>
<li>status 3
<ul>
<li>cambio 3
<ul>
<li>id 7</li>
<li>id 8</li>
<li>id 9</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>year 2
<ul>
<li>area
<ul>
<li>status
<ul>
<li>cambio
<ul>
<li>id 1</li>
<li>id 2</li>
<li>id 3</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</body>
</html>

como ven, los resultados se agruparían por: Año->area->status->cambio->record .
Qué algoritmo me sugieren para crear esta lista ? considerando que:
- los records siempre estarán a 5 niveles
- el record siempre tiene "varios" parent_id... que vendrían siendo: Año->area->status->cambio, de ahí depende como se agrupa en la lista
la verdad no se me ocurre nada... lo único que había hecho fue:
Código [Seleccionar]
$cYear = $cArea = $cStatus = $cCambio = "" ;
$pYear = $pArea = $pStatus = $pCambio = "" ;
$html .= '<ul id="group">' ;
$first = true ;
$x = 0 ;
foreach ($result as $d) {
$html.="<li>".print_r($d)."</li>" ;
/*if ($first) {
$cYear = $d['year'] ;
$html.='<li><a href="#" onclick="return false;">'.$d['year']."</a><ul>\n" ;
}
$pYear = $d['year'] ;
$pArea = $d['area'] ;
if ($pArea != $cArea) {
$cArea = $d['area'] ;
$html .= '<li><a href="#" onclick="return false;">'.$d['area']."</a><ul>\n" ;
}
$pStatus = $d['status'] ;
if ($pStatus != $cStatus) {
$cStatus = $d['status'] ;
$html .= '<li><a href="#" onclick="return false;">'.$d['status']."</a><ul>\n" ;
}
$pCambio = $d['cambio'] ;
if ($pCambio != $cCambio) {
$cCambio = $d['cambio'] ;
$html .= '<li><a href="#" onclick="return false;">'.$d['cambio']."</a><ul>\n" ;
}
$html .= "<li>CD-".$d['id']."/".$d['year']."</li>\n" ;
$first = FALSE ;
//$x++ ;
//if ($x==4) break ;*/
}
$html .= '</ul>' ;
pero como ven es un desmadre que no tiene nada de bonito....
cualquier sugerencia es agradecida.
gracias
