Ver Mensaje Individual
  #21 (permalink)  
Antiguo 08/09/2014, 20:22
mikehove
 
Fecha de Ingreso: abril-2012
Ubicación: Argentina
Mensajes: 215
Antigüedad: 12 años, 7 meses
Puntos: 2
Respuesta: [APORTE] Menu categorias y subcategorias y mas...

Hola a todos. Intento poner en funcionamiento la idea de Triby, pero a igual que vwolf, imprime un error.

Error:
Cita:
Fatal error: Call to a member function query() on a non-object in C:\xampp\htdocs\mysqli1.php on line 14
Código completo:

Código PHP:
Ver original
  1. <?php
  2. function con(){
  3.     $conexion = mysql_connect( "localhost" , "root" , "")or die ( mysql_error() );
  4.     mysql_select_db( "menu" , $conexion );
  5.     return $conexion;
  6. }
  7.  
  8. // Cargamos opciones del menú
  9. function cargaMenu($mysqli) {
  10.     $menu = array('todos' => array());
  11.     // Falta una columna que permita seleccionar orden
  12.     // Ahora se muestran como fueron dados de alta
  13.     $sql = "SELECT * FROM menu";
  14.     $res = $mysqli->query($sql);
  15.     while($row = $res->fetch_assoc()) {
  16.         $id_padre = $row['id_padre'];
  17.         // Verificamos si existe el menú padre o lo creamos
  18.         (!isset($menu[$id_padre]) && $menu[$id_padre] = array());
  19.         // Agregamos ID del elemento actual al padre
  20.         $menu[$id_padre][] = $row['id'];
  21.         // Agregamos el elemento actual al arreglo 'todos'
  22.         $menu['todos'][$row['id']] = $row;
  23.     }
  24.     return $menu;
  25. }
  26.  
  27. // Mostramos menú
  28. function menu($id_padre, $menu) {
  29.     $html = "<ul>\n";
  30.     foreach($menu[$id_padre] as $id_menu) {
  31.          $html .= "<li><a href=\"pagina.php?opcion=$id_menu\">{$menu[$id_menu]['menu_nombre']}</a>";
  32.          // Este menú tiene hijos?
  33.          if(isset($menu[$id_menu])) {
  34.               $html .= menu($id_menu, $menu);
  35.          }
  36.          $html .= "</li>\n";
  37.     }
  38.     $html .= "</ul>\n";
  39. }
  40.  
  41. // Lo hacemos funcionar
  42. $mysqli = con();
  43. $menu = cargaMenu($mysqli);
  44.  
  45. // Mostramos menú, padre=0 para menú principal
  46. echo menu(0, $menu);
  47.  
  48. // Podemos repetirlo en el pie de página, sin otras consultas a BDD
  49. echo menu(0, $menu);
  50.  
  51. // O, si necesitamos sólo un submenú específico (productos)
  52. echo menu(5, $menu);?>