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 originalNotice: Undefined index: productos_nombre in C:\xampp\htdocs\usuarios\administrador\content\menu_url2.php on line 43
Notice: Undefined offset: 2 in C:\xampp\htdocs\usuarios\administrador\content\menu_url2.php on line 43
Notice: Undefined offset: 4 in C:\xampp\htdocs\usuarios\administrador\content\menu_url2.php on line 43
Notice: Undefined index: productos_nombre in C:\xampp\htdocs\usuarios\administrador\content\menu_url2.php on line 43
Notice: Undefined offset: 3 in C:\xampp\htdocs\usuarios\administrador\content\menu_url2.php on line 43
Notice: Undefined index: productos_nombre in C:\xampp\htdocs\usuarios\administrador\content\menu_url2.php on line 43
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<?php
function crearConexion(){
//Datos para la conexión con el servidor
$servidor = "localhost";
$nombreBD = "mi_base";
$usuario = "root";
$contrasena = "";
//Creando la conexión, nuevo objeto mysqli
$conexion = new mysqli($servidor,$usuario,$contrasena,$nombreBD);
//Si sucede algún error la función muere e imprimir el error
if($conexion->connect_error){
die("Error en la conexion : ".$conexion->connect_errno. "-".$conexion->connect_error);
}
//Si nada sucede retornamos la conexión
return $conexion;
}
// Cargamos opciones del menú
function cargaMenu($mysqli) {
// Falta una columna que permita seleccionar orden
// Ahora se muestran como fueron dados de alta
$sql = "SELECT * FROM productos";
$res = $mysqli->query($sql);
while($row = $res->fetch_assoc()) {
$id_padre = $row['productos_parent_id'];
// Verificamos si existe el menú padre o lo creamos
(!isset($menu[$id_padre]) && $menu[$id_padre] = array()); // Agregamos ID del elemento actual al padre
$menu[$id_padre][] = $row['productos_id'];
// Agregamos el elemento actual al arreglo 'todos'
$menu['todos'][$row['productos_id']] = $row;
}
return $menu;
}
// Mostramos menú
function menu($id_padre, $menu) {
$html = "<ul>\n";
foreach($menu[$id_padre] as $id_menu) {
$html .= "<li><a href=\"pagina.php?opcion=$id_menu\">{$menu[$id_menu]['productos_nombre']}</a>";
// Este menú tiene hijos?
if(isset($menu[$id_menu])) { $html .= menu($id_menu, $menu);
}
$html .= "</li>\n";
}
$html .= "</ul>\n";
}
// Lo hacemos funcionar
$mysqli = crearConexion();
$menu = cargaMenu($mysqli);
// Mostramos menú, padre=0 para menú principal
echo menu(0, $menu);
?>
Estructura básica de la tabla:
Código SQL:
Ver originalCREATE TABLE IF NOT EXISTS `productos` (
`productos_id` INT(11) NOT NULL AUTO_INCREMENT,
`productos_parent_id` INT(11) NOT NULL,
`productos_nombre` VARCHAR(30) COLLATE utf8_spanish_ci DEFAULT NULL,
PRIMARY KEY (`productos_id`)
)
INSERT INTO `productos` (`productos_id`, `productos_parent_id`, `productos_nombre`) VALUES
(1, 0, 'Inicio'),
(2, 1, 'Categoria 1'),
(3, 5, 'Categoria 3-1'),
(4, 1, 'Categoria 2'),
(5, 1, 'Categoria 3'),
(6, 5, 'Categoria 3-1'),
(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