Foros del Web » Programando para Internet » PHP »

Menu php

Estas en el tema de Menu php en el foro de PHP en Foros del Web. Hola, qué tal, estoy armando un menú a partir de base de datos donde tengo 3 tables: levelcero, juzgados y secretarias levelcero está compuesta por: ...
  #1 (permalink)  
Antiguo 05/11/2011, 14:21
Avatar de Martriay  
Fecha de Ingreso: noviembre-2010
Mensajes: 80
Antigüedad: 13 años, 5 meses
Puntos: 5
Menu php

Hola, qué tal, estoy armando un menú a partir de base de datos donde tengo 3 tables: levelcero, juzgados y secretarias

levelcero está compuesta por:
id -> autonumerico
label-> varchar (30)

mientras que tanto juzgados como secretarías, están compuestos por:
id-> autonumerico
parent-> int
label-> varchar(25)

mi código es:

Código PHP:
<?
include ("mysqlconn.php");

$sql_0 "SELECT id, label FROM levelcero ORDER BY id ASC"
$sql_juz "SELECT id, label, parent FROM juzgados ORDER BY parent, id ASC"
$sql_sec "SELECT id, label, parent FROM secretarias ORDER BY parent, id ASC"
$lvl0 mysql_query($sql_0);
$juz mysql_query($sql_juz);
$sec mysql_query($sql_sec);
while (
$cero mysql_fetch_object($lvl0)) {
    
$levelcero[$cero->id]['id'] = $cero->id;
    
$levelcero[$cero->id]['label'] = $cero->label;
    }
while (
$uno mysql_fetch_object($juz)) {
    
$juzgado[$uno->id]['id'] = $uno->id;
    
$juzgado[$uno->id]['parent'] = $uno->parent;
    
$juzgado[$uno->id]['label'] = $uno->label;
    }
while (
$dos mysql_fetch_object($sec)) {
    
$secretaria[$dos->id]['id'] = $dos->id;
    
$secretaria[$dos->id]['parent'] = $dos->parent;
    
$secretaria[$dos->id]['label'] = $dos->label;
    }
mysql_free_result($lvl0);
mysql_free_result($juz);
mysql_free_result($sec);
echo 
"<ul>";
foreach (
$levelcero as $a){
    echo 
"<li><a href=","?a=",$a['id'],">",$a['label'],"</a></li>";
    echo 
"<ul>";
    foreach (
$juzgado as $b){
        if(
$a['id']==$b['parent']){
            echo 
"<li><a href=","?a=",$a['id'],"&b=",$b['id'],">",$b['id'],"</a></li>";
            echo 
"<ul>";
            foreach (
$secretaria as $c){
                if(
$b['id']==$c['parent']){
                    echo 
"<li><a href=","?a=",$a['id'],"&b=",$b['id'],"&c=",$c['id'],">",$c['id'],"</a></li>";
                    }
                }
            echo 
"</ul>";
            }
        }
    echo 
"</ul>";
    }
echo 
"</ul>";
Básicamente lo que haces es recuperar de la db levelcero, juzgados y secretarías, y anida las secciones en distintas listas, con esta jerarquía:
levelcero
->juzgados
->secretarías

y otorgándole a cada <li> un link que lleve al mismo sitio pasando por url parámetros para luego mostrar el contenido, lo que quisiera saber es cómo lograr que el menú sólo se expanda mostrando su posición actual; es decir:
si ejecuto este código, me despliega la lista con las <ul> expandidas, yo quiero que sólo me muestre la posición en la que estoy ¿se entiende?


edito: ya se que se puede hacer con javascript/jquery, pero la idea es que sólo carguen esos datos desde el servidor

Última edición por Martriay; 06/11/2011 a las 08:53

Etiquetas: mysql, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:08.