Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/03/2009, 22:11
darlingstella
 
Fecha de Ingreso: octubre-2008
Mensajes: 18
Antigüedad: 15 años, 6 meses
Puntos: 0
menú dinámico con tabla mysql

Hola a todos!

Les comento lo que necesito y lo que he hecho, a ver si me pueden ayudar. De antemano, pido disculpas si esta no es la sección adecuada, pero no supe bien si colocarla en javascript o en mysql, pero me decidí ponerla aquí.

La idea es crear un menú dinámico que muestre las opciones tipo árbol (al estilo explorador de windows) sacadas estas de una tabla menu en mysql, en donde sea posible añadir o eliminar opciones, simplemente añadiendo o eliminando un campo de dicha tabla. Para este comportamiento de abrir y cerrar las opciones, buscando por la red, encontré un js que permite ese comportamiento en una lista html (ul y li) de este tipo:

Código HTML:
<ul id="treemenu1" class="treeview">
<li>Opcion 1</li>
<li>Opcion 2</li>
<li>Opcion 3
	<ul>
	<li>Opcion 3.1</li>
	<li>Opcion 3.2</li>
	</ul>
</li>
<li>Opcion 4</li>
<li>Opcion 5
	<ul>
	<li>Opcion 5.1</li>
	<li>Submenu opcion 5.2
		<ul>
		<li>Opcion 5.2.1</li>
		<li>Opcion 5.2.2</li>
		</ul>
	</li>
	</ul>
</li>
<li>Opcion 6</li>
</ul> 
El problema lo tengo al intentar dibujar esas opciones de la lista, sacando los valores de la tabla.

La tabla tiene la siguiente estructura: idmenu --- titulo --- idpadre --- hijo, donde si el nodo es raíz, tiene idpadre=0. El campo hijo me indica si este tiene o no descendientes, tomando valores de 1 ó 0, respectivamente.

Basándome en un ejemplo colocado en las FAQ, pensé en crear una función php que hiciera las consultas a la bd, y que "pintara" las respectivas opciones. Pero no funciona, y la verdad, como soy nueva en esto, no sé donde estoy fallando. El código de mi función php es:

Código PHP:
<?

function crearMenu($tabla,$key,$mostrar,$idpadre,$valpadre,$hijo){  

    
$sql="select * from ".$tabla." where ".$idpadre."=".$valpadre;
    
$rs=mysql_query($sql);
    while(
$arr=mysql_fetch_array($rs)){
        echo (
'<li>'.$arr['opcion']);
        if (
$arr['hijo']==1) {
            echo (
"<ul>");
            
crearMenu($tabla,$key,$mostrar,$idpadre,$arr['idopc'],$hijo,);
        }
        echo (
"</li>");
    }
}

?>
En esa función, intento darle la estructura de la lista html, la cual se inicia y termina en la página php que la invoca, la cual es esta:
Código PHP:
<?
    
include ("conectar.php");
    include (
"menu2.php");
?>


<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
<script type="text/javascript" src="simpletreemenu.js">
</script>

<link rel="stylesheet" type="text/css" href="simpletree.css" />

</head>

<body>
<h4>Men&uacute; de Prueba</h4>


<ul id="treemenu1" class="treeview">
<?
    crearMenu
("menu","idmenu","titulo","idpadre",0,"hijo");
?>
    
</ul>

<script type="text/javascript">
ddtreemenu.createTree("treemenu1", true)
</script>

</body>
</html>
Espero haberme explicado y que puedan ayudarme!! Disculpas si el post está muy largo