Foros del Web » Programando para Internet » PHP »

Crear menu con Categorias y SubCategorias usando MySQL y PHP

Estas en el tema de Crear menu con Categorias y SubCategorias usando MySQL y PHP en el foro de PHP en Foros del Web. Hola a todos, esta es la primera vez que posteo, les cuento que soy nuevo en php y mysql y me encuentro muy entretenido aprendiendo ...
  #1 (permalink)  
Antiguo 19/03/2008, 22:58
Avatar de ANGELIUZ  
Fecha de Ingreso: enero-2008
Mensajes: 11
Antigüedad: 16 años, 10 meses
Puntos: 0
Crear menu con Categorias y SubCategorias usando MySQL y PHP

Hola a todos, esta es la primera vez que posteo, les cuento que soy nuevo en php y mysql y me encuentro muy entretenido aprendiendo todos los dias algo nuevo, pero el tema en cuestion es que tengo un problema que no me ha dejado avanzar.

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`

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`

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 ya que solo me muestra 1 subcategoria por categoria.

Código PHP:
  mysql_select_db("secciones");
//$sql="select subcategorias.subcategoria_id, subcategorias.subcategoria_nombre from categorias, subcategorias where categorias.categoria_id = subcategorias.categoria_id group by categorias.categoria_id";
  
$sql="SELECT categorias.*, subcategorias.* FROM categorias, subcategorias WHERE categorias.categoria_id=subcategorias.categoria_id GROUP BY categorias.categoria_id";
  
$result mysql_query($sql);
  
$num_result mysql_num_rows($result);

  echo 
"<p>Número de Categorias encontradas: ".$num_result."</p>";

while(
$row mysql_fetch_array($result))
    { 
        echo 
"<p><strong> ".($i+1).".- ";
        echo 
stripslashes($row["categoria_nombre"])."<br>";
         echo 
stripslashes($row["subcategoria_nombre"])."<br>";
    } 
Estoy recien aprendiendo y probablemente hay algo que es basico y que yo no estoy haciendo, agradeceria cualquier ayuda para poder seguir aprendiendo y aprendiendo.

Gracias de ante mano
  #2 (permalink)  
Antiguo 19/03/2008, 23:28
 
Fecha de Ingreso: diciembre-2007
Mensajes: 927
Antigüedad: 16 años, 11 meses
Puntos: 12
Re: Crear menu con Categorias y SubCategorias usando MySQL y PHP

Puedes decir el error que te lanza?
  #3 (permalink)  
Antiguo 20/03/2008, 00:06
Avatar de ANGELIUZ  
Fecha de Ingreso: enero-2008
Mensajes: 11
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: Crear menu con Categorias y SubCategorias usando MySQL y PHP

Cita:
Iniciado por Edig Ver Mensaje
Puedes decir el error que te lanza?
En realidad no me lanza ningun error, pero no logro hacer lo que yo quiero, la consulta que muestro me da el siguiente resultado:

Categoria1
Subcategoria1

Categoria2
Subcategoria2

Y lo que yo necesito es esto:

Categoria1
Subcategoria1
Subcategoria2
Subcategoria3

Categoria2
Subcategoria1
Subcategoria2
Subcategoria3

Es decir en estos momentos con la consulta que uso solo puedo leer una subcategria por categoria y yo quiero hacer una especie de menu con varias subcategorias, imagino que debe ser un problema de lectura de mi consulta, se que podria hacerlo con una sola tabla, pero mi idea es aprender a trabajar con tablas relacionadas.

Si alguien supiera del algun manual o tutorial para trabajar con tablas relacionadas a lo mejor me podria servir de ayuda

Gracias por la ayuda
  #4 (permalink)  
Antiguo 20/03/2008, 00:48
 
Fecha de Ingreso: marzo-2008
Mensajes: 173
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Crear menu con Categorias y SubCategorias usando MySQL y PHP

bueno pues ahorita ya voy de salida, pero t prometo k manana checo bien tu codigo, a simple vista me parece bien AUNK NO ESTAS USANDO OTRA TABLA DONDE GUARDES AL RELACION lo haces en la misma de subcategoria, pues te repito a simple vista em parece bien pero manana lo checo bien.

y por mientras ps si va a ser un menu de navegacion estas olvidando el campo de URL, amenos k la url la formes apartir del nombre + una extencion
  #5 (permalink)  
Antiguo 20/03/2008, 00:55
Avatar de chuliano  
Fecha de Ingreso: marzo-2008
Ubicación: C. de Patagones - Argentina
Mensajes: 21
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Crear menu con Categorias y SubCategorias usando MySQL y PHP

proba con cambiar $i+ por $i++
quizas funcione
  #6 (permalink)  
Antiguo 20/03/2008, 08:12
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 19 años, 3 meses
Puntos: 638
Re: Crear menu con Categorias y SubCategorias usando MySQL y PHP

hola, aqui solucionado:
http://www.forosdelweb.com/f18/etiqu...-while-548714/

saludos y suerte
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #7 (permalink)  
Antiguo 20/03/2008, 13:25
Avatar de ANGELIUZ  
Fecha de Ingreso: enero-2008
Mensajes: 11
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: Crear menu con Categorias y SubCategorias usando MySQL y PHP

Estoy casi casi, el problema que tengo es que ahora solo me muestra la id de la categoria (categoria_id) pego el codigo para ver si alguien me da una manito.

Código PHP:
mysql_select_db("secciones");

$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 "<h1>".$row -> categoria_nombre."...</h1>";
        
$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&amp;categoria_id=" $subCat[0] . "'>" .
                
$subCat[1] . "</a></li>";
        }
        echo 
"</ul>";
    }

el resultado que me da es el siguiente:

Código HTML:
1

    * Subcategoria 1
    * Subcategoria 2
    * Subcategoria 3

2

    * Subcategoria 1
    * Subcategoria 2
Es decir me esta mostrando categorias_id de la tabla categorias y lo que yo necesito que me muestre es categoria_nombre de la tabla categorias.

Seguramente es algo sencillo de solucionar pero ya estoy medio mareado y no puedo dar con la resolucion.

PD. Alguien sabe de un tutorial que explique el mejor manejo de tablas relacionadas de mysql con php???

Gracias por la ayuda
  #8 (permalink)  
Antiguo 20/03/2008, 13:41
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 19 años, 3 meses
Puntos: 638
Re: Crear menu con Categorias y SubCategorias usando MySQL y PHP

hola, arregla esto:
Código PHP:
while ($row mysql_fetch_object($sqlQuery)){
    if(
$categoria != $row -> categoria_id){
        
//echo "<h1>".$row -> categoria_nombre."...</h1>";
        
$categoria $row -> categoria;
        
$pos array_push$categorias,  array( $categoria, array() ) );
    }    
    
$categorias[$pos][1][] = array($row->subcategoria_id$row -> subcategoria_nombre);
    

Cita:

mysql_fetch_object()
es similar a mysql_fetch_array(), con la diferencia que un objeto es devuelto en lugar de una matriz. Indirectamente, quiere decir que solo se puede aceder a los datos por el nombre del campo, y no por su posición. (los números no pueden ser nombres de propiedades de objetos).
http://php.net/mysql_fetch_object
lo que quierer decir es que en la linea:
Código PHP:
$categoria $row -> categoria_id
le estas asignando el valor del campo id a la variable $categoria, por eso te lo imprime mas abajo y no el valor del campo categoria en si.

saludos y suerte
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #9 (permalink)  
Antiguo 20/03/2008, 19:15
Avatar de ANGELIUZ  
Fecha de Ingreso: enero-2008
Mensajes: 11
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: Crear menu con Categorias y SubCategorias usando MySQL y PHP

Finalmente este codigo me dio los resultados que necesutaba, pero estoy en la duda de si esto seria trabajar con tablas relacionadas o simplemente seria una forma de generar dos consultas.

Ojala alguien me lo aclare, porque ahora quiero avanzar y conectar este menu a las otras tablas de mi sistema de administracion web.

Código PHP:
  mysql_select_db("secciones");
  
  
$consultaCategorias mysql_query("SELECT * FROM categorias");

    while(
$categorias mysql_fetch_array($consultaCategorias))
    {
        echo 
"<strong>".$categorias[categoria_nombre]."</strong><br>";
        
        
$consultasubcategoria mysql_query("SELECT * FROM subcategorias WHERE categoria_id = '{$categorias[categoria_id]}'");
        
        while(
$subcategorias mysql_fetch_array($consultasubcategoria))
        {
            echo 
"&nbsp;&nbsp;-".$subcategorias[subcategoria_nombre]."<br>";
        }
    } 
  #10 (permalink)  
Antiguo 21/03/2008, 05:35
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 529
Antigüedad: 17 años, 11 meses
Puntos: 11
Re: Crear menu con Categorias y SubCategorias usando MySQL y PHP

Para qué hacer dos tablas iguales?
Mejor trabaja sólo con una.

En esa única tabla para categoría pones un campo que se llame "madre".
En las subcategorías pones en "madre" el id de la categoría madre.

En las categorías que no tienen "madre" (o sea son del primer nivel) en ese campo le pones "0".

Después hacer un while con los resultados, los guardas a todos en un array y los procesas con una fución para mostras subcategorías, subsub, subsubsub hasta el nivel que necesites.

Como resultado: de una sola consulta mysql tienes todo y no tienes que hacer múltiples consultas anidadas. Además no tienes límites en los niveles.

Seguimos en contacto.
Saludos
  #11 (permalink)  
Antiguo 21/03/2008, 07:26
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 19 años, 3 meses
Puntos: 638
Re: Crear menu con Categorias y SubCategorias usando MySQL y PHP

Cita:
Iniciado por ANGELIUZ Ver Mensaje
Finalmente este codigo me dio los resultados que necesutaba, pero estoy en la duda de si esto seria trabajar con tablas relacionadas o simplemente seria una forma de generar dos consultas.

Ojala alguien me lo aclare, porque ahora quiero avanzar y conectar este menu a las otras tablas de mi sistema de administracion web.

Código PHP:
  mysql_select_db("secciones");
  
  
$consultaCategorias mysql_query("SELECT * FROM categorias");

    while(
$categorias mysql_fetch_array($consultaCategorias))
    {
        echo 
"<strong>".$categorias[categoria_nombre]."</strong><br>";
        
        
$consultasubcategoria mysql_query("SELECT * FROM subcategorias WHERE categoria_id = '{$categorias[categoria_id]}'");
        
        while(
$subcategorias mysql_fetch_array($consultasubcategoria))
        {
            echo 
"&nbsp;&nbsp;-".$subcategorias[subcategoria_nombre]."<br>";
        }
    } 
y con lo que te dije mas arriba no solucionaste??? era solo cambiar una linea...
por otro lado, no se que quieres decir con lo de las dos consultas y las tablas relacionadas.

ademas, creo que hacer una consulta dentro de un bucle es algo sofocante para el server

saludetes
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #12 (permalink)  
Antiguo 21/03/2008, 08:37
Avatar de Bellenger  
Fecha de Ingreso: noviembre-2004
Ubicación: En un lugar del Mundo...
Mensajes: 599
Antigüedad: 20 años
Puntos: 4
Re: Crear menu con Categorias y SubCategorias usando MySQL y PHP

Concuerdo con [rogertm], realizar consultas dentro de un repetitivo, es algo sofocante imagina pobre server. Podrias usar algo de joins para obtener esa informacion y al momento de mostrarla solo mostrar segun la categoria. Otro punto es que, Chicos que paso.... mysql_fetch_array, por que no usamos las sentencias de mysql adecuadamente, si recordamos un poco la teoria tenemos que mysql_fetch_array, genera dos arreglos cuando no se le especifica el tipo de arreglo como resultado, estos arreglos son asociativos y indexados numericamente,
Código PHP:
   $subcategorias mysql_fetch_array($consultasubcategoria); 
Por lo cual seguimos recargando la tarea al server, usalo asi, para obtener el resultado en un arreglo indexado numericamente:
Código PHP:
   $subcategorias mysql_fetch_array($consultasubcategoriaMYSQL_NUM); 
y para tenerlo asociativamente asi:
Código PHP:
   $subcategorias mysql_fetch_array($consultasubcategoriaMYSQL_ASSOC); 
Jeje, espero no haber incomodado con esto, y creo que es hora de ir cambiando a mysqli, tiene muchas posiblidades y es mas limpio, saludos...
__________________
Un Caballero Jura Lealtad. Usa su espada para suprimir la Injusticia No Conoce el Odio y Tampoco el AMOR...
  #13 (permalink)  
Antiguo 21/03/2008, 09:03
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 529
Antigüedad: 17 años, 11 meses
Puntos: 11
Re: Crear menu con Categorias y SubCategorias usando MySQL y PHP

O utiliza mysql_fetch_assoc()

Saludos
  #14 (permalink)  
Antiguo 21/03/2008, 20:14
 
Fecha de Ingreso: agosto-2006
Ubicación: Santiago (Chile)
Mensajes: 29
Antigüedad: 18 años, 3 meses
Puntos: 0
Re: Crear menu con Categorias y SubCategorias usando MySQL y PHP

Cita:
Iniciado por rogertm Ver Mensaje
y con lo que te dije mas arriba no solucionaste??? era solo cambiar una linea...
por otro lado, no se que quieres decir con lo de las dos consultas y las tablas relacionadas.

ademas, creo que hacer una consulta dentro de un bucle es algo sofocante para el server

saludetes
¿a que te refieres con sofocante?

Yo hice algo parecido en un menú que se auto-construye en meses y después días. Hice una consulta para los menes y dentro de los meses llamaba a una función donde hay otra consulta que me muestra los días de cada mes.
  #15 (permalink)  
Antiguo 21/03/2008, 21:20
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 8 meses
Puntos: 52
Re: Crear menu con Categorias y SubCategorias usando MySQL y PHP

estan hablando del mismo tema creo en este POST y le han dado solucion, a mi me crea un menu de categorias que al hacer click muestra el contenido de la categoria miratelo esta muy bien y funciona
  #16 (permalink)  
Antiguo 22/03/2008, 06:36
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 19 años, 3 meses
Puntos: 638
Re: Crear menu con Categorias y SubCategorias usando MySQL y PHP

Cita:
Iniciado por guachacapepe Ver Mensaje
¿a que te refieres con sofocante?

Yo hice algo parecido en un menú que se auto-construye en meses y después días. Hice una consulta para los menes y dentro de los meses llamaba a una función donde hay otra consulta que me muestra los días de cada mes.
a ver, a ver, me refiero a por ejemplo, si tu sitio tiene una gran afluencia de visitantes, imaginate que por cada uno de ellos, cada vez que pase de una pagina a otra, esa consulta seria ejecutada, hablando en español, si tu sitio lo visitan miles por hora, el server se sofoca :-p por tener que hacer una consulta dentro de un bucle por cada uno de esos visitantes

y me callo que me parece que estoy cantinfleando
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #17 (permalink)  
Antiguo 22/03/2008, 11:04
Avatar de ANGELIUZ  
Fecha de Ingreso: enero-2008
Mensajes: 11
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: Crear menu con Categorias y SubCategorias usando MySQL y PHP

Cita:
Iniciado por jaronu Ver Mensaje
estan hablando del mismo tema creo en este y le han dado ....solucion, a mi me crea un menu de categorias que al hacer click muestra el contenido de la categoria miratelo esta muy bien y funciona
De hecho use ese mismo ejemplo y me funciono, el tema es que encuentro razon a algunos que dicen que el server se sofocaria, ademas que lo que me interesa es a aprender a utilizar la relacion que hay entre dos tablas, es decir, si dos tablas comparten un campo en comun, me gustaria crear un script que pueda entender que esos dos campos son lo mismo, creo que con la consulta inicial que hago lo logro, el problema es cuando quiero mostrar las subcategorias, solo me muestra la primera.

En fin aun trabajo en una solucion optima para poder aprender bien el tema desde el principio.

Saludos
  #18 (permalink)  
Antiguo 22/03/2008, 11:15
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 19 años, 3 meses
Puntos: 638
Re: Crear menu con Categorias y SubCategorias usando MySQL y PHP

niño...! pero si hace dias te dije que tenias que cambiar solo una linea, que asi te funcionaria, nu lo viste??? pues repetimos.

tienes este codigo:
Código PHP:
<?php
mysql_select_db
("secciones");

$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 "<h1>".$row -> categoria_nombre."...</h1>";
        
$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&amp;categoria_id=" $subCat[0] . "'>" .
                
$subCat[1] . "</a></li>";
        }
        echo 
"</ul>";
    }
}
?>
que te devuelve esto:

1
* Subcategoria 1
* Subcategoria 2
* Subcategoria 3

2
* Subcategoria 1
* Subcategoria 2

siendo 1 y 2 el id de cada categoria, lo unico que tienes que hacer es cambiar esta linea:
Código PHP:
<?php
$categoria 
$row -> categoria_id;
?>
por esta:
Código PHP:
<?php
$categoria 
$row -> categoria_nombre;
?>
y ya esta, prueba a ver, que cuando te lo puse ni siquiera dijiste si te funciono o no

saludos y suerte
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #19 (permalink)  
Antiguo 22/03/2008, 12:06
 
Fecha de Ingreso: agosto-2006
Ubicación: Santiago (Chile)
Mensajes: 29
Antigüedad: 18 años, 3 meses
Puntos: 0
Re: Crear menu con Categorias y SubCategorias usando MySQL y PHP

Cita:
Iniciado por rogertm Ver Mensaje
a ver, a ver, me refiero a por ejemplo, si tu sitio tiene una gran afluencia de visitantes, imaginate que por cada uno de ellos, cada vez que pase de una pagina a otra, esa consulta seria ejecutada, hablando en español, si tu sitio lo visitan miles por hora, el server se sofoca :-p por tener que hacer una consulta dentro de un bucle por cada uno de esos visitantes

y me callo que me parece que estoy cantinfleando
Gracias por la aclaración, pero me falto poner que yo no he hecho dos tablas si no que una sola. Si se calienta con una sola tabla lo arreglare y haciendo una consulta dentro de un bucle lo arreglare
  #20 (permalink)  
Antiguo 22/03/2008, 12:47
Avatar de ANGELIUZ  
Fecha de Ingreso: enero-2008
Mensajes: 11
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: Crear menu con Categorias y SubCategorias usando MySQL y PHP

Cita:
Iniciado por rogertm Ver Mensaje
niño...! pero si hace dias te dije que tenias que cambiar solo una linea, que asi te funcionaria, nu lo viste??? pues repetimos.

tienes este codigo:
Código PHP:
<?php
mysql_select_db
("secciones");

$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 "<h1>".$row -> categoria_nombre."...</h1>";
        
$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&amp;categoria_id=" $subCat[0] . "'>" .
                
$subCat[1] . "</a></li>";
        }
        echo 
"</ul>";
    }
}
?>
que te devuelve esto:

1
* Subcategoria 1
* Subcategoria 2
* Subcategoria 3

2
* Subcategoria 1
* Subcategoria 2

siendo 1 y 2 el id de cada categoria, lo unico que tienes que hacer es cambiar esta linea:
Código PHP:
<?php
$categoria 
$row -> categoria_id;
?>
por esta:
Código PHP:
<?php
$categoria 
$row -> categoria_nombre;
?>
y ya esta, prueba a ver, que cuando te lo puse ni siquiera dijiste si te funciono o no

saludos y suerte

Mis disculpa mi estimado, pero no, no me habia funcionado, antes habia probado hacer ese cambio y no funciono me da este resultado:

Código HTML:
Categoria 1

    * Subcategoria 1

Categoria 1

    * Subcategoria 2

Categoria 1

    * Subcategoria 3

Categoria 2

    * otra

Categoria 2

    * Subcategoria 2

Categoria 2

    * Subcategoria 3

Categoria 3

    * Subcategoria 1
  #21 (permalink)  
Antiguo 22/03/2008, 13:09
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 19 años, 3 meses
Puntos: 638
Re: Crear menu con Categorias y SubCategorias usando MySQL y PHP

Cita:
Iniciado por ANGELIUZ Ver Mensaje
Estoy casi casi, el problema que tengo es que ahora solo me muestra la id de la categoria (categoria_id) pego el codigo para ver si alguien me da una manito.

Código PHP:
mysql_select_db("secciones");

$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 "<h1>".$row -> categoria_nombre."...</h1>";
        
$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&amp;categoria_id=" $subCat[0] . "'>" .
                
$subCat[1] . "</a></li>";
        }
        echo 
"</ul>";
    }

el resultado que me da es el siguiente:

Código HTML:
1

    * Subcategoria 1
    * Subcategoria 2
    * Subcategoria 3

2

    * Subcategoria 1
    * Subcategoria 2
Es decir me esta mostrando categorias_id de la tabla categorias y lo que yo necesito que me muestre es categoria_nombre de la tabla categorias.

Seguramente es algo sencillo de solucionar pero ya estoy medio mareado y no puedo dar con la resolucion.

PD. Alguien sabe de un tutorial que explique el mejor manejo de tablas relacionadas de mysql con php???

Gracias por la ayuda
Cita:
Iniciado por ANGELIUZ Ver Mensaje
Mis disculpa mi estimado, pero no, no me habia funcionado, antes habia probado hacer ese cambio y no funciono me da este resultado:

Código HTML:
Categoria 1

    * Subcategoria 1

Categoria 1

    * Subcategoria 2

Categoria 1

    * Subcategoria 3

Categoria 2

    * otra

Categoria 2

    * Subcategoria 2

Categoria 2

    * Subcategoria 3

Categoria 3

    * Subcategoria 1
me voy al quirofano x_O
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #22 (permalink)  
Antiguo 22/05/2008, 19:27
Avatar de marcosw  
Fecha de Ingreso: febrero-2008
Mensajes: 75
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Crear menu con Categorias y SubCategorias usando MySQL y PHP

hola estoy revisando tu consulta y todas las sugerencias por que yo tengo el mismo problema tú, deseo hacer lo mismo, pero el codigo que usas y el que te sugieren es super complicado y rebuscado, confieso que recien estoy iniciandome en php por eso no entiendo algunas funciones.

Mi idea para solucionar el problema es aunque no quira usar dos consultas, de una no creo que salga, y usar tablas.

Aqui les dejo el codigo que use para hacer lo de las categorias y subcategorias

<? include('conex.php');

$cn = Conectarse();
$buscar = $_POST["buscar"];
$sql = "SELECT categoria.catg_id, categoria.catg_nom FROM categoria ORDER BY categoria.catg_id ASC";
$result=mysql_query($sql);
//echo $sql;
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<p>hola todos</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<?
if (!$row= mysql_fetch_array($result))
{
echo "<font size='5'><b>No hay categorias !!!!</b></font>";
}
else
{
do{

?>
<tr>
<td><? echo $row["catg_nom"] ?></td>
</tr>
<tr>
<td><table width="100%" border="0" cellspacing="0" cellpadding="0">
<?
$cn2 = Conectarse();
$catgid = $row["catg_id"];
$sql2 = "SELECT subcategoria.scatg_id, subcategoria.scatg_nom FROM subcategoria WHERE subcategoria.catg_id = $catgid ORDER BY subcategoria.scatg_id ASC";
$result2=mysql_query($sql2);

if (!$row2= mysql_fetch_array($result2))
{
echo "<font size='5'><b>No hay subcategorias !!!!</b></font>";
}
else
{
do{

?>
<tr>
<td align="left"><? echo $row2["scatg_id"] ?></td>
<td align="left"><? echo $row2["scatg_nom"] ?></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<?
} while ($row2=mysql_fetch_array($result2));
}
?>
</table></td>
</tr>
<tr>
<td>&nbsp;</td>
</tr>
<?
} while ($row=mysql_fetch_array($result));
}
?>
<tr>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
</tr>
</table>
<p><br>

</p>
</body>
</html>

Última edición por marcosw; 22/05/2008 a las 23:48
  #23 (permalink)  
Antiguo 23/05/2008, 01:59
Avatar de ANGELIUZ  
Fecha de Ingreso: enero-2008
Mensajes: 11
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Crear menu con Categorias y SubCategorias usando MySQL y PHP

Al final nunca postie la solucion que encontre para mi problema, dejo aqui el codigo por si a alguien le gusta, para mi que aprendi en febrero de este año a intentar programar me dejo satisfecho esta forma.
He aqui el codigo:

Código PHP:
<?php
function generate_menu2($id_padre)
    {    
$conexion=mysql_connect("localhost","USUARIO","PASSWORD") or die("Problemas en la conexion");//CONECTO A LA BASE DE DATOS
        
mysql_select_db("BASE DE DATOS",$conexion) or die("Problemas en la selección de la base de datos");
        
$query=mysql_query("SELECT * FROM secciones",$conexion);
        
mysql_close($conexion);
            while ( 
$row mysql_fetch_assoc($query) )
                {
$menu_array[$row["id_categoria"]] = array("id_categoria" => $row["id_categoria"],"nombre_cat" => $row["nombre_cat"],"id_padre" => $row["id_padre"]);
                }
            foreach(
$menu_array as $key => $value)
                {if (
$value["id_padre"] == $id_padre
                        {    
                        if(
$id_padre == 0)
                            {echo 
$value['nombre_cat']."<br>";
                             
generate_menu2($key);
                            }
                        else 
                            {echo 
"&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;"$value['nombre_cat']."<br>";
                             
generate_menu2($key);
                            }
                        }
                }
    }
?>
<?php generate_menu2
(0);?>
Y la tabla seria la siguiente:
Código:
CREATE TABLE IF NOT EXISTS `secciones` (
  `id_categoria` int(10) NOT NULL auto_increment,
  `nombre_cat` varchar(200) NOT NULL default '',
  `id_padre` int(11) NOT NULL default '0',
  PRIMARY KEY  (`id_categoria`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=39 ;
Ojo con las comillas del codigo de la table no estoy seguro que sean esas.

En el fondo lo simplifique al maximo dejandolo solo en una tabla y cuando quiero relacionarla con otra tabla, por ejemplo con la tabla productos, lo que hago es incluir dentro de la tabla productos, el campo id_categoria y asi hago la relacion, lugo el script del menu separa las categorias hijas de las padres.

Bueno si alguien puede mejorar el codigo o mostrar un codigo mas bk se le agradeceria y asi sigo aprendiendo, siempre pienso que en unos años mas me reire de las cosas que hago ahora, pero este es mi humilde avance.

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 21:29.