He tratado de desarrollar un sistema de categorias y subcategorias usando tablas relacionadas pero no lo he logrado, mi idea por el momento es generar un menu como este:
Categoria 1
SubCategoria1
SubCategoria2
SubCategoria3
Categoria 2
SubCategoria1
SubCategoria2
SubCategoria3
Categoria 3
SubCategoria1
SubCategoria2
SubCategoria3
La estructura de las tablas que estoy usando es la siguiente:
Estructura de tabla para la tabla `categorias`
Código
CREATE TABLE `categorias` (
`categoria_id` INT(10) NOT NULL AUTO_INCREMENT,
`categoria_nombre` VARCHAR(150) NOT NULL,
PRIMARY KEY (`categoria_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
Estructura de tabla para la tabla `subcategorias`
Código
CREATE TABLE `subcategorias` (
`subcategoria_id` INT(10) NOT NULL AUTO_INCREMENT,
`categoria_id` INT(10) NOT NULL,
`subcategoria_nombre` VARCHAR(150) NOT NULL,
PRIMARY KEY (`subcategoria_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;
Hasta el momento lo mejor que he logrado es generando la consulta de este modo, pero el resultado que me muestra no es el que yo quiero.
Categoria 1
Categoria 2
Categoria 5
Categoria 4
1
SubCategoria1
SubCategoria2
SubCategoria3
2
SubCategoria1
SubCategoria2
SubCategoria3
3
SubCategoria1
SubCategoria2
SubCategoria3
Código
<?php
// Ejemplo de Conexion a base de datos
$servidor ='localhost';
$basedatos ='tutorial';
$usuario_basedatos ='tutorial';
$clave_basedatos ='XXXX';
//Conectamos con el servidor
$db=@mysql_connect($servidor,$usuario_basedatos,$clave_basedatos);
mysql_select_db($basedatos);
$sqlQuery = mysql_query("SELECT categorias.*, subcategorias.* FROM categorias, subcategorias
WHERE categorias.categoria_id = subcategorias.categoria_id
ORDER BY subcategorias.subcategoria_id ASC", $db) or die(mysql_error());
$categoria = "";
$categorias = array();
$pos = 0;
while ($row = mysql_fetch_object($sqlQuery)){
if($categoria != $row -> categoria_id){
echo "<h3>".$row -> categoria_nombre."...</h3>";
$categoria = $row -> categoria_id;
$pos = array_push( $categorias, array( $categoria, array() ) );
}
$categorias[$pos][1][] = array($row->subcategoria_id, $row -> subcategoria_nombre);
}
foreach ($categorias as $categoria)
{
if( !empty( $categoria[0] ) ) {
echo "<h1>" . $categoria[0] . "</h1>";
}
if (count($categoria[1]) > 0)
{
echo "<ul>";
foreach ($categoria[1] as $subCat)
{
echo "<li><a href='index.php?mod=categorias&categoria_id=" . $subCat[0] . "'>" .
$subCat[1] . "</a></li>";
}
echo "</ul>";
}
}
?>
Pero no logro sacar como lo quiero, espero que me podáis ayudar.
Un saludo y gracias de nuevo










Autor


En línea







