Lo que trato de evitar es ir a la base de datos a cargar el menu cada vez que me muevo por la web, me parece un abuso. El problema que me encuentro es como envio la matriz de una página a otra. Lo he intentando con $_SESSION pero no acaba de funcionarme. Lo hago así:
Funcion que carga el menu desde la base de datos:
Código:
Función que lista el menu:function cargamenu() { global $db; $query='select * from TEMAS order by TEM_NIVEL1,TEM_NIVEL2,TEM_NIVEL3,TEM_CODIGO'; $result = mysql_query($query); if (!$result) die('Error Cargando Opciones de Menu:' . mysql_error()); $i=0; unset($menu); $menu=array(); while($temas = mysql_fetch_array($result)){ $menu[$i]['TEM_CODIGO']=$temas['TEM_CODIGO']; $menu[$i]['TEM_NIVEL1']=$temas['TEM_NIVEL1']; $menu[$i]['TEM_NIVEL2']=$temas['TEM_NIVEL2']; $menu[$i]['TEM_NIVEL3']=$temas['TEM_NIVEL3']; $menu[$i]['TEM_DESCRIP']=$temas['TEM_DESCRIP']; $menu[$i]['TEM_ENLACE']=$temas['TEM_ENLACE']; $menu[$i]['TEM_PAI']=$temas['TEM_PAI']; $i++; } $op1=0; $op2=0; session_register('menu','op1','op2'); }
Código:
Entrada del script:function listamenu($menu,$id1,$id2) { echo '<div id="barra-menu">'; echo '<div id="menu">'; reset ($menu); foreach($menu as $i => $filaval) { echo '<p>'.$menu[$i]['TEM_DESCRIP']; if ($menu[$i]['TEM_NIVEL2']<1){ echo '<a class="m1" href ="index.php?op=&id='.$menu[$i]["TEM_CODIGO"].'&pai='.$menu[$i]["TEM_CODIGO"].'">'.$menu[$i]["TEM_DESCRIP"].'</a><br>';} else if ($menu[$i]['TEM_PAI']==1) { if (trim($menu[$i]["TEM_ENLACE"])!='') { echo '<A class="m2" HREF="javascript:popUp(\''.$menu[$i]["TEM_ENLACE"].'\')">'.$menu[$i]["TEM_DESCRIP"].'</A><br>';} else { echo '<a class="m2" href ="index.php?op=&id='.$menu[$i]["TEM_CODIGO"].'&pai='.$menu[$i]["TEM_PAI"].'">'.$menu[$i]["TEM_DESCRIP"].'</a><br>';} } } }
Código:
Alguien puede decirme en que me estoy equivocando o si existe alguna alternativa mejor? conectaDB(); session_start(); if (!session_is_registered('menu')) cargamenu(); listamenu($menus,$op1,$op2);