Gracias a todos!
He tratado de hacer lo que comentado por Triby.
A continuacion los resultados:
En primer lugar la tabla mysql con datos de prueba con la que he trabajado:
Código SQL:
Ver originalCREATE TABLE IF NOT EXISTS `categorias_noticias` (
`id_categoria` INT(11) NOT NULL AUTO_INCREMENT,
`id_cat_principal` INT(11) NOT NULL,
`nombre` VARCHAR(25) NOT NULL,
`rango_minimo` INT(11) NOT NULL,
`visible` tinyint(1) NOT NULL,
PRIMARY KEY (`id_categoria`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ;
--
-- Volcado de datos para la tabla `categorias_noticias`
--
INSERT INTO `categorias_noticias` (`id_categoria`, `id_cat_principal`, `nombre`, `rango_minimo`, `visible`) VALUES
(1, 0, 'Deportes', 1, 1),
(2, 0, 'Sociedad', 1, 1),
(3, 2, 'Economia', 1, 1),
(4, 2, 'Religion', 1, 1),
(5, 1, 'Tierra', 1, 1),
(6, 1, 'Mar', 1, 1),
(7, 5, 'Futbol', 1, 1),
(8, 5, 'Tenis', 1, 1),
(9, 7, 'Futbol 7', 1, 1),
(10, 7, 'Futbol 11', 1, 1);
Con el siguiente codigo, si no me equivoco, creo el array comentado por Triby:
Código PHP:
Ver original<?php
$q = mysqli_query($link_db,"SELECT id_categoria, id_cat_principal, nombre FROM categorias_noticias
ORDER BY id_categoria");
$indice=0;
"id_categoria"=>$row[0],
"id_cat_principal"=>$row[1],
"nombre"=>$row[2],
);
$indice++;
}
?>
El resultado de var_dump es el siguiente:
Cita: array(8) {
[0]=> array(3) {
["id_categoria"]=> string(1) "1" ["id_cat_principal"]=> string(1) "0" ["nombre"]=> string(8) "Deportes"
}
[1]=> array(3) {
["id_categoria"]=> string(1) "2" ["id_cat_principal"]=> string(1) "0" ["nombre"]=> string(8) "Sociedad"
}
[2]=> array(3) {
["id_categoria"]=> string(1) "3" ["id_cat_principal"]=> string(1) "2" ["nombre"]=> string(8) "Economia"
}
[3]=> array(3) {
["id_categoria"]=> string(1) "4" ["id_cat_principal"]=> string(1) "2" ["nombre"]=> string(8) "Religion"
}
[4]=> array(3) {
["id_categoria"]=> string(1) "5" ["id_cat_principal"]=> string(1) "1" ["nombre"]=> string(6) "Tierra"
}
[5]=> array(3) {
["id_categoria"]=> string(1) "6" ["id_cat_principal"]=> string(1) "1" ["nombre"]=> string(3) "Mar"
}
[6]=> array(3) {
["id_categoria"]=> string(1) "7" ["id_cat_principal"]=> string(1) "5" ["nombre"]=> string(6) "Futbol"
}
[7]=> array(3) {
["id_categoria"]=> string(1) "8" ["id_cat_principal"]=> string(1) "5" ["nombre"]=> string(5) "Tenis"
}
[8]=> array(3) {
["id_categoria"]=> string(1) "9" ["id_cat_principal"]=> string(1) "7" ["nombre"]=> string(8) "Futbol 7"
}
[9]=> array(3) {
["id_categoria"]=> string(2) "10" ["id_cat_principal"]=> string(1) "7" ["nombre"]=> string(9) "Futbol 11"
}
}
Asta aqui creo que mas o menos voy bien no?
Ahora mi mayor problema es que no se bien como interactuar con el array anterior...
Por ejemplo:
¿Como hago para pintar unicamente los registros con id_cat_padre=0?
------------
De "chiripa" he conseguido mostrar el menú ordenado como quiero... sin embargo, aparte de que creo que no es muy eficiente... no es un metodo que me convezca, porque por decirlo de alguna forma, nunca se "en que parte o bub-nivel" estoy. Es decir, si quiero pintarlo con etiquetas <ul><li></li><li><ul>.....</ul></li></ul>....etc... no sabria con el siguiente codigo como hacerlo:
Código PHP:
Ver original<?php
echo mostrar(0);
//var_dump($todos);
//echo $todos[0]['nombre'];
function mostrar($actual=0) {
$q = mysqli_query($link_db,"SELECT id_categoria, id_cat_principal, nombre FROM categorias_noticias
ORDER BY id_categoria");
$indice=0;
"id_categoria"=>$row[0],
"id_cat_principal"=>$row[1],
"nombre"=>$row[2],
);
$indice++;
}
foreach($todos as $valor) {
if($valor['id_cat_principal']==$actual) {
echo $valor['nombre']."<br/>";
echo mostrar($valor['id_categoria']);
}
}
}
?>
El codigo anterior me devuelve las categorias y subcategorias ordenadas (algo es algo):
Cita: Deportes
Tierra
Futbol
Futbol 7
Futbol 11
Tenis
Mar
Sociedad
Economia
Religion