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 tratando de hacer un menu php a partir de una base de datos donde no haya límite de subsecciones, es por ...
  #1 (permalink)  
Antiguo 19/07/2011, 10:21
Avatar de Martriay  
Fecha de Ingreso: noviembre-2010
Mensajes: 80
Antigüedad: 13 años, 6 meses
Puntos: 5
Menu php

Hola, qué tal.

Estoy tratando de hacer un menu php a partir de una base de datos donde no haya límite de subsecciones, es por eso que me basé en este código

http://www.finalwebsites.com/tutorials/dynamic-navigation-list.php

le hice muy pequeñas modificaciones muy por encima, pero aún así no pasa del 2do nivel, me devuelve todos los items con parent id = 0, después las subsecciones hijas de 0, pero no más allá

En lugar de devolverme 0.1.1.1, se estanca en 0.1.1

alguien tiene idea de por qué?

Acá les dejo mi código

Cita:
<?php
include ("mysqlconn.php");
$sql = "SELECT id, label, parent FROM secciones ORDER BY parent, id ASC";
$items = mysql_query($sql);
while ($obj = mysql_fetch_object($items)) {
if ($obj->parent == 0) {
$parent_menu[$obj->id]['label'] = $obj->label;
$parent_menu[$obj->id]['link'] = $obj->id;
} else {
$sub_menu[$obj->id]['parent'] = $obj->parent;
$sub_menu[$obj->id]['label'] = $obj->label;
$sub_menu[$obj->id]['link'] = $obj->id;
$parent_menu[$obj->parent]['count']++;
}
}
mysql_free_result($items);
function menu($parent_array, $sub_array, $qs_val = "menu", $main_id = "nav", $sub_id = "subnav", $extra_style = "foldout") {
$menu = "<ul id=\"".$main_id."\">\n";
foreach ($parent_array as $pkey => $pval) {
if (!empty($pval['count'])) {
$menu .= " <li><a class=\"".$extra_style."\" href=\""."?"."id=".$pval['link']."&".$qs_val."=".$pkey."\">".$pval['label']."</a></li>\n";
} else {
$menu .= " <li><a class=\"".$extra_style."\" href=\""."?"."id=".$pval['link']."\">".$pval['label']."</a></li>\n";
}
if (!empty($_REQUEST[$qs_val])) {
$menu .= "<ul id=\"".$sub_id."\">\n";
foreach ($sub_array as $sval) {
if ($pkey == $_REQUEST[$qs_val] && $pkey == $sval['parent']) {
$menu .= "<li><a href=\""."?id=".rebuild_link($sval['link'], $qs_val, $sval['parent'])."\">".$sval['label']."</a></li>\n";
}
}
$menu .= "</ul>\n";
}
}
$menu .= "</ul>\n";
return $menu;
}
function rebuild_link($link, $parent_var, $parent_val) {
$link_parts = explode("?", $link);
$base_var = "&".$parent_var."=".$parent_val;
if (!empty($link_parts[1])) {
$link_parts[1] = str_replace("&amp;", "##", $link_parts[1]);
$parts = explode("##", $link_parts[1]);
$newParts = array();
foreach ($parts as $val) {
$val_parts = explode("=", $val);
if ($val_parts[0] != $parent_var) {
array_push($newParts, $val);
}
}
if (count($newParts) != 0) {
$qs = "&amp;".implode("&amp;", $newParts);
}
return $link_parts[0].$base_var.$qs;
} else {
return $link_parts[0].$base_var;
}
}
echo menu($parent_menu, $sub_menu, "menu", "nav", "subnav");56
?>

Edit: como funciona a partir de la url, probé poniendo el parent id de 3er nivel en la url y efectivamente, me muestra sus subsecciones pero descolocadas, no debajo de su parent, sino por debajo de todo el menú, y bajo un <li> vacío.
Ese li vacío aparece únicamente si hay secciones de 3er nivel, es decir, estas que no aparecen.

Última edición por Martriay; 19/07/2011 a las 10:28
  #2 (permalink)  
Antiguo 19/07/2011, 12:08
Avatar de lordglazoon  
Fecha de Ingreso: julio-2011
Mensajes: 54
Antigüedad: 12 años, 9 meses
Puntos: 8
Respuesta: Menu php

Entra a [URL]http://www.dhtmlx.com[/URL] hay tree listos funcionando son open source. si quieres hacer el tuyo propio solo mira el codigo de los ejemplos

Última edición por lordglazoon; 19/07/2011 a las 12:29
  #3 (permalink)  
Antiguo 19/07/2011, 20:33
Avatar de Martriay  
Fecha de Ingreso: noviembre-2010
Mensajes: 80
Antigüedad: 13 años, 6 meses
Puntos: 5
Respuesta: Menu php

Voy a mirar, gracias!
  #4 (permalink)  
Antiguo 20/07/2011, 13:23
Avatar de Martriay  
Fecha de Ingreso: noviembre-2010
Mensajes: 80
Antigüedad: 13 años, 6 meses
Puntos: 5
Respuesta: Menu php

Estuve mirando y no se si es como yo quiero, me resultaría mucho más sencillo hacer andar el que tengo ahora, ¿alguna ayuda?

Gracias

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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 21:51.