Ver Mensaje Individual
  #4 (permalink)  
Antiguo 09/10/2014, 14:37
mikehove
 
Fecha de Ingreso: abril-2012
Ubicación: Argentina
Mensajes: 215
Antigüedad: 12 años, 9 meses
Puntos: 2
Respuesta: Dudoso error de sintaxis de 1 línea PHP

Que gusto Pateketrueke que me hayas respondido... Muchas gracias (en otros temas creía que te había saturado porque me cuesta entender este mundo maravilloso de la programación). También quiero saludar: "Hola Hss".

Este es el asunto:

Estoy tratando de hacer una conexión a mi BD con una función recursiva de un menú-categorías, escrita en un antiguo Post del amigo colaborador Triby:


Mensaje de error:

Código HTML:
Ver original
  1. Notice: Undefined index: productos_nombre in C:\xampp\htdocs\usuarios\administrador\content\menu_url2.php on line 43
  2.  
  3. Notice: Undefined offset: 2 in C:\xampp\htdocs\usuarios\administrador\content\menu_url2.php on line 43
  4.  
  5. Notice: Undefined offset: 4 in C:\xampp\htdocs\usuarios\administrador\content\menu_url2.php on line 43
  6.  
  7. Notice: Undefined index: productos_nombre in C:\xampp\htdocs\usuarios\administrador\content\menu_url2.php on line 43
  8.  
  9. Notice: Undefined offset: 3 in C:\xampp\htdocs\usuarios\administrador\content\menu_url2.php on line 43
  10.  
  11. Notice: Undefined index: productos_nombre in C:\xampp\htdocs\usuarios\administrador\content\menu_url2.php on line 43
  12.  
  13. Notice: Undefined offset: 7 in C:\xampp\htdocs\usuarios\administrador\content\menu_url2.php on line 43




DATOS DE LA PÁGINA "MENU_URL2.PHP":

Código PHP:
Ver original
  1. <?php  
  2.     function crearConexion(){
  3.         //Datos para la conexión con el servidor
  4.         $servidor   = "localhost";
  5.         $nombreBD   = "mi_base";
  6.         $usuario    = "root";
  7.         $contrasena = "";
  8.         //Creando la conexión, nuevo objeto mysqli
  9.         $conexion = new mysqli($servidor,$usuario,$contrasena,$nombreBD);
  10.         //Si sucede algún error la función muere e imprimir el error
  11.         if($conexion->connect_error){
  12.             die("Error en la conexion : ".$conexion->connect_errno.
  13.                                       "-".$conexion->connect_error);
  14.         }
  15.         //Si nada sucede retornamos la conexión
  16.         return $conexion;
  17.     }
  18.        
  19.        // Cargamos opciones del menú
  20. function cargaMenu($mysqli) {
  21.     $menu = array('todos' => array());
  22.     // Falta una columna que permita seleccionar orden
  23.     // Ahora se muestran como fueron dados de alta
  24.     $sql = "SELECT * FROM productos";
  25.     $res = $mysqli->query($sql);
  26.     while($row = $res->fetch_assoc()) {
  27.         $id_padre = $row['productos_parent_id'];
  28.         // Verificamos si existe el menú padre o lo creamos
  29.         (!isset($menu[$id_padre]) && $menu[$id_padre] = array());
  30.         // Agregamos ID del elemento actual al padre
  31.         $menu[$id_padre][] = $row['productos_id'];
  32.         // Agregamos el elemento actual al arreglo 'todos'
  33.         $menu['todos'][$row['productos_id']] = $row;
  34.     }
  35.     return $menu;
  36. }
  37.  
  38. // Mostramos menú
  39. function menu($id_padre, $menu) {
  40.     $html = "<ul>\n";
  41.     foreach($menu[$id_padre] as $id_menu) {
  42.        
  43.         $html .= "<li><a href=\"pagina.php?opcion=$id_menu\">{$menu[$id_menu]['productos_nombre']}</a>";    
  44.          
  45.          // Este menú tiene hijos?
  46.          if(isset($menu[$id_menu])) {
  47.               $html .= menu($id_menu, $menu);
  48.          }
  49.          $html .= "</li>\n";
  50.     }
  51.     $html .= "</ul>\n";
  52. }
  53. // Lo hacemos funcionar
  54. $mysqli = crearConexion();
  55. $menu = cargaMenu($mysqli);
  56.    
  57. // Mostramos menú, padre=0 para menú principal
  58. echo menu(0, $menu);
  59.      
  60. ?>

Estructura básica de la tabla:

Código SQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `productos` (
  2.   `productos_id` INT(11) NOT NULL AUTO_INCREMENT,
  3.   `productos_parent_id` INT(11) NOT NULL,
  4.   `productos_nombre` VARCHAR(30) COLLATE utf8_spanish_ci DEFAULT NULL,
  5.   PRIMARY KEY (`productos_id`)
  6. )
  7.  
  8.  
  9. INSERT INTO `productos` (`productos_id`, `productos_parent_id`, `productos_nombre`) VALUES
  10. (1, 0, 'Inicio'),
  11. (2, 1, 'Categoria 1'),
  12. (3, 5, 'Categoria 3-1'),
  13. (4, 1, 'Categoria 2'),
  14. (5, 1, 'Categoria 3'),
  15. (6, 5, 'Categoria 3-1'),
  16. (7, 6, 'Categoria 3-1-1');

DUDAS:

*Creo que la "funcion menu" tendría que retornar en algo
*Me llama la atención esa línea 43 que tiene prácticamente un solo color, a diferencia de otras líneas:




Ayuda, por favor

Última edición por mikehove; 10/10/2014 a las 23:19