Foros del Web » Programando para Internet » PHP »

Lista de Categorias y Subcategorias con una sola tabla.

Estas en el tema de Lista de Categorias y Subcategorias con una sola tabla. en el foro de PHP en Foros del Web. Código PHP:         $cate [  $categoria [ 'categoria_id'  ] ] [ 'super' ] =  $categoria [ 'categoria_nombre' ]; ...

  #31 (permalink)  
Antiguo 28/01/2014, 14:21
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: Lista de Categorias y Subcategorias con una sola tabla.

Código PHP:

        $cate
$categoria['categoria_id' ] ] ['super'] = $categoria['categoria_nombre']; 
  #32 (permalink)  
Antiguo 28/01/2014, 14:25
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: Lista de Categorias y Subcategorias con una sola tabla.

Código PHP:

$cate
$categoria['categoria_id' ] ] ['super'] = $categoria['categoria_nombre']; 
Esta tambien tiene un error
  #33 (permalink)  
Antiguo 28/01/2014, 14:27
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: Lista de Categorias y Subcategorias con una sola tabla.

hace esto
Código PHP:
echo "<pre>";
print_r($cate);
echo 
"</pre>"
te tiene que quedar parecido a esto para que funcione

Cita:
Iniciado por luis010182 Ver Mensaje
la idea es que el array $cate quede asi
Código HTML:
Array
(
    [1] => Array
        (
            [super] => cat1
            [sub] => Array
                (
                    [2] => cat2
                    [3] => cat3
                    [4] => cat4
                )

        )

    [5] => Array
        (
            [super] => cat5
        )

    [6] => Array
        (
            [super] => cat6
            [sub] => Array
                (
                    [7] => cat7
                    [8] => cat8
                )

        )

)

  #34 (permalink)  
Antiguo 28/01/2014, 14:37
 
Fecha de Ingreso: mayo-2009
Mensajes: 166
Antigüedad: 14 años, 11 meses
Puntos: 2
Respuesta: Lista de Categorias y Subcategorias con una sola tabla.

Código HTML:
Ver original
  1. Array
  2. (
  3.     [1] => Array
  4.         (
  5.             [super] => Lenceria
  6.         )
  7.  
  8.     [2] => Array
  9.         (
  10.             [super] => Calzados
  11.         )
  12.  
  13.     [3] => Array
  14.         (
  15.             [super] => Categoria 3
  16.         )
  17.  
  18.     [4] => Array
  19.         (
  20.             [super] => Categoria 4
  21.         )
  22.  
  23. )

Me tira todas como super que raro...
  #35 (permalink)  
Antiguo 28/01/2014, 14:40
 
Fecha de Ingreso: mayo-2009
Mensajes: 166
Antigüedad: 14 años, 11 meses
Puntos: 2
Respuesta: Lista de Categorias y Subcategorias con una sola tabla.

abia puesto doble la linea de super:

Código HTML:
Ver original
  1. Array
  2. (
  3.     [1] => Array
  4.         (
  5.             [super] => Lenceria
  6.         )
  7.  
  8.     [2] => Array
  9.         (
  10.             [sub] => Calzados
  11.         )
  12.  
  13.     [3] => Array
  14.         (
  15.             [sub] => Categoria 3
  16.         )
  17.  
  18.     [4] => Array
  19.         (
  20.             [sub] => Categoria 4
  21.         )
  22.  
  23. )

estoy usandolo asi... pero me da error idem:

Código PHP:
Ver original
  1. <?php
  2.     $categorias = mysql_query("SELECT * FROM categorias");
  3.      
  4.     while ($categoria = mysql_fetch_assoc($categorias)) {
  5.       #  $categoria['categoria_madre'] = NULL;
  6.      if( is_null( $categoria['categoria_madre'] ) ){
  7.         $cate[ $categoria['categoria_id' ] ] ['super'] = $categoria['categoria_nombre'];  
  8.       }
  9.       else{
  10.        $cate[ $categoria['categoria_id' ] ] ['sub'] = $categoria['categoria_nombre'];
  11.       }
  12.     }
  13.    
  14. echo "<pre>";
  15. print_r($cate);
  16. echo "</pre>";  
  17.     ?>
  18.     <li><a href="#">TIENDA ONLINE</a><span></span>
  19.          <ul>
  20.     <?php
  21.     foreach($cate as $k=>$c ){
  22.      
  23.             if( !array_key_exists('sub', $c)) {
  24.                 ?><li><a href="#"><?php echo $c['super']?></a></li>
  25.                 <?php } else { ?>
  26.                 <li><a href="#"><?php echo $c['super']?></a>
  27.                     <ul>
  28.                         <?php foreach($c['sub'] as $kk=>$cc){
  29.                             ?><li><a href="#"><?=$cc?></a></li>
  30.                             <?php } ?>
  31.                     </ul>
  32.                 </li>
  33.                 <?php
  34.             }
  35.     }
  36.     ?>
  37.          </ul>
  38.     </li>
  #36 (permalink)  
Antiguo 28/01/2014, 14:43
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: Lista de Categorias y Subcategorias con una sola tabla.

Código PHP:
    <?php
        $categorias 
mysql_query("SELECT * FROM categorias");
         
        while (
$categoria mysql_fetch_assoc($categorias)) {
          if( 
is_null$categoria['categoria_madre']) ){
            
$cate$categoria['categoria_id' ] ] ['super'] = $categoria['categoria_nombre'];
          }
          else{
           
$cate$categoria['categoria_madre' ] ] ['sub'] [ $categoria['categoria_id'] ] = $categoria['categoria_nombre'];
          }
        }
        
?>
        <li><a href="#">TIENDA ONLINE</a><span></span>
             <ul>
        <?php
        
foreach($cate as $k=>$c ){
         
                if( !
array_key_exists('sub'$c)) {
                    
?><li><a href="#"><?php echo $c['super']?></a></li>
                    <?php } else { ?>
                    <li><a href="#"><?php echo$c['super']?></a>
                        <ul>
                            <?php foreach($c['sub'] as $kk=>$cc){
                                
?><li><a href="#"><?=$cc?></a></li>
                                <?php ?>
                        </ul>
                    </li>
                    <?php
                
}
        }
        
?>
             </ul>
        </li>
Tenes el codigo asi? Hiciste los cambios anteriores, fijate la parte donde se arma el array $cate.
  #37 (permalink)  
Antiguo 28/01/2014, 14:54
 
Fecha de Ingreso: mayo-2009
Mensajes: 166
Antigüedad: 14 años, 11 meses
Puntos: 2
Respuesta: Lista de Categorias y Subcategorias con una sola tabla.

Este es el codigo que tengo ahora:

Código PHP:
Ver original
  1. <?php
  2.         $categorias = mysql_query("SELECT * FROM categorias");
  3.         while ($categoria = mysql_fetch_assoc($categorias)) {
  4.           #  $categoria['categoria_madre'] = NULL;
  5.         if( is_null( $categoria['categoria_madre'] ) ){
  6.             $cate[ $categoria['categoria_id' ] ] ['super'] = $categoria['categoria_nombre'];  
  7.           }
  8.           else{
  9.            $cate[ $categoria['categoria_madre' ] ] ['sub'] [ $categoria['categoria_id'] ] = $categoria['categoria_nombre'];
  10.           }
  11.         }
  12.        
  13.     echo "<pre>";
  14.     print_r($cate);
  15.     echo "</pre>";  
  16.         ?>
  17.         <li><a href="#">TIENDA ONLINE</a><span></span>
  18.              <ul>
  19.         <?php
  20.         foreach($cate as $k=>$c ){
  21.                 if( !array_key_exists('sub', $c)) {
  22.                     ?><li><a href="#"><?php echo $c['super']; ?></a></li>
  23.                     <?php } else { ?>
  24.                     <li><a href="#"><?php echo $c['super']; ?></a>
  25.                         <ul>
  26.                             <?php foreach($c['sub'] as $kk=>$cc){
  27.                                 ?><li><a href="#"><? echo $cc; ?></a></li>
  28.                                 <?php } ?>
  29.                         </ul>
  30.                     </li>
  31.                     <?php
  32.                 }
  33.         }
  34.         ?>
  35.              </ul>
  36.         </li>

Y el Array Mejoró:

Código HTML:
Ver original
  1. Array
  2. (
  3.     [1] => Array
  4.         (
  5.             [super] => Lenceria
  6.             [sub] => Array
  7.                 (
  8.                     [2] => Calzados
  9.                     [3] => Categoria 3
  10.                 )
  11.  
  12.         )
  13.  
  14.     [2] => Array
  15.         (
  16.             [sub] => Array
  17.                 (
  18.                     [4] => Categoria 4
  19.                 )
  20.  
  21.         )
  22.  
  23. )

Esa es la estructura pero me tira el error en la linea 51 Notice: Undefined index: super inindex.php on line 50

<li><a href="#"><?php echo $c['super']; ?></a>

Es esa la linea... ya se ve todo bien excepro el segundo Super... sino ya esta casi andandoooooooooooooooooooooooooooooooooooo
  #38 (permalink)  
Antiguo 28/01/2014, 14:58
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: Lista de Categorias y Subcategorias con una sola tabla.

Cita:
Iniciado por rakshaka Ver Mensaje
Este es el codigo que tengo ahora:

Código PHP:
Ver original
  1. <?php
  2.         $categorias = mysql_query("SELECT * FROM categorias");
  3.         while ($categoria = mysql_fetch_assoc($categorias)) {
  4.           #  $categoria['categoria_madre'] = NULL;
  5.         if( is_null( $categoria['categoria_madre'] ) ){
  6.             $cate[ $categoria['categoria_id' ] ] ['super'] = $categoria['categoria_nombre'];  
  7.           }
  8.           else{
  9.            $cate[ $categoria['categoria_madre' ] ] ['sub'] [ $categoria['categoria_id'] ] = $categoria['categoria_nombre'];
  10.           }
  11.         }
  12.        
  13.     echo "<pre>";
  14.     print_r($cate);
  15.     echo "</pre>";  
  16.         ?>
  17.         <li><a href="#">TIENDA ONLINE</a><span></span>
  18.              <ul>
  19.         <?php
  20.         foreach($cate as $k=>$c ){
  21.                 if( !array_key_exists('sub', $c)) {
  22.                     ?><li><a href="#"><?php echo $c['super']; ?></a></li>
  23.                     <?php } else { ?>
  24.                     <li><a href="#"><?php echo $c['super']; ?></a>
  25.                         <ul>
  26.                             <?php foreach($c['sub'] as $kk=>$cc){
  27.                                 ?><li><a href="#"><? echo $cc; ?></a></li>
  28.                                 <?php } ?>
  29.                         </ul>
  30.                     </li>
  31.                     <?php
  32.                 }
  33.         }
  34.         ?>
  35.              </ul>
  36.         </li>

Y el Array Mejoró:

Código HTML:
Ver original
  1. Array
  2. (
  3.     [1] => Array
  4.         (
  5.             [super] => Lenceria
  6.             [sub] => Array
  7.                 (
  8.                     [2] => Calzados
  9.                     [3] => Categoria 3
  10.                 )
  11.  
  12.         )
  13.  
  14.     [2] => Array
  15.         (
  16.             [sub] => Array
  17.                 (
  18.                     [4] => Categoria 4
  19.                 )
  20.  
  21.         )
  22.  
  23. )

Esa es la estructura pero me tira el error en la linea 51 Notice: Undefined index: super inindex.php on line 50

<li><a href="#"><?php echo $c['super']; ?></a>

Es esa la linea... ya se ve todo bien excepro el segundo Super... sino ya esta casi andandoooooooooooooooooooooooooooooooooooo

Te esta diciendo que no tenes la categoria padre de "Categoria 4". Osea que hay una subcategoria pero no esta la categoria superior.

Fijate que me parece que en la base tenes declarado la categoria "Calzados" como hija de la categoria 1 cuando deberia se NULL
  #39 (permalink)  
Antiguo 28/01/2014, 15:04
 
Fecha de Ingreso: mayo-2009
Mensajes: 166
Antigüedad: 14 años, 11 meses
Puntos: 2
Respuesta: Lista de Categorias y Subcategorias con una sola tabla.

Ahhhhhhhhhhhh ahi lo arreglé y pongo despues... mi consultas son 2...

Una, solo me va a permitir poner categoria y sub? no puedo hacer sub de sub?

Porque el error de la categoria 4 es porque era subcategoria de una subcategoria de Lencería.

La segunda. Como hago para poner en el link el id de la categoria?

Si uso
<?php echo $c['super']; ?>

me tirara el nombre y no la id
  #40 (permalink)  
Antiguo 28/01/2014, 15:06
 
Fecha de Ingreso: mayo-2009
Mensajes: 166
Antigüedad: 14 años, 11 meses
Puntos: 2
Respuesta: Lista de Categorias y Subcategorias con una sola tabla.

agregue esto $cate[ $categoria['categoria_id' ] ] ['id'] = $categoria['categoria_id']; y ya anda lo de los links con ID pero me falta saber si se puede un tercer nivel con este diseño de script
  #41 (permalink)  
Antiguo 28/01/2014, 15:11
 
Fecha de Ingreso: mayo-2009
Mensajes: 166
Antigüedad: 14 años, 11 meses
Puntos: 2
Respuesta: Lista de Categorias y Subcategorias con una sola tabla.

Ah no, no pude hacer funcionar lo de la id
  #42 (permalink)  
Antiguo 28/01/2014, 15:13
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: Lista de Categorias y Subcategorias con una sola tabla.

Cita:
Iniciado por rakshaka Ver Mensaje
Ahhhhhhhhhhhh ahi lo arreglé y pongo despues... mi consultas son 2...

Una, solo me va a permitir poner categoria y sub? no puedo hacer sub de sub?

Porque el error de la categoria 4 es porque era subcategoria de una subcategoria de Lencería.

La segunda. Como hago para poner en el link el id de la categoria?

Si uso
<?php echo $c['super']; ?>

me tirara el nombre y no la id
Como hacer la sub categoria de la sub si se puede, pero deberias platear de otra forma. Habria que agregar tantos niveles de anidamiento como sub categorias. O crear una funcion recursiva para armar el array .

para mostrar los link solo deberias hacer
Código PHP:

<?php
        
foreach($cate as $k=>$c ){
                if( !
array_key_exists('sub'$c)) {
                    
?><li><a href="productos.php?cat=<?=$k?>"><?php echo $c['super']; ?></a></li>
                    <?php } else { ?>
                    <li><a href="productos.php?cat=<?=$k?>"><?php echo $c['super']; ?></a>
                        <ul>
                            <?php foreach($c['sub'] as $kk=>$cc){
                                
?><li><a href="productos.php?cat=<?=$kk?>"><? echo $cc?></a></li>
                                <?php ?>
                        </ul>
                    </li>
                    <?php
                
}
        }
        
?>
  #43 (permalink)  
Antiguo 28/01/2014, 15:19
 
Fecha de Ingreso: mayo-2009
Mensajes: 166
Antigüedad: 14 años, 11 meses
Puntos: 2
Respuesta: Lista de Categorias y Subcategorias con una sola tabla.

Ahhhhhhhhhhhhhhhhhh que lastima la idea era esa... pero puedo solucionarlo quizas haciendo una tabla de categorias superior a esta pero bueno, no importa.

Hay forma de cambiar el array para que me permita mas niveles?
  #44 (permalink)  
Antiguo 28/01/2014, 15:40
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: Lista de Categorias y Subcategorias con una sola tabla.

Si hay que pensarlo un rato, la idea es que se formen los niveles en el array de la misma forma que se arma el menu

Código HTML:
id nivel 1-1
   nom nivel 1-1
   sub 
     id nivel 2-1
     nom nivel 2-1
        sub 
          id nivel 3
          nom nivel 3
     id nivel 2-2
     nom nivel 2-2
.........
  #45 (permalink)  
Antiguo 28/01/2014, 15:55
 
Fecha de Ingreso: mayo-2009
Mensajes: 166
Antigüedad: 14 años, 11 meses
Puntos: 2
Respuesta: Lista de Categorias y Subcategorias con una sola tabla.

Claro... pense que era mas facil. Bueno, usare una sola subcategoria
  #46 (permalink)  
Antiguo 28/01/2014, 15:58
 
Fecha de Ingreso: mayo-2009
Mensajes: 166
Antigüedad: 14 años, 11 meses
Puntos: 2
Respuesta: Lista de Categorias y Subcategorias con una sola tabla.

Dejo el código para que alguien en internet lo use:

Base:
Código MySQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `categorias` (
  2.   `categoria_id` bigint(200) NOT NULL AUTO_INCREMENT,
  3.   `categoria_madre` int(15) DEFAULT NULL,
  4.   `categoria_nombre` varchar(250) NOT NULL,
  5.   PRIMARY KEY (`categoria_id`)
  6. ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=23 ;

Código PHP:
Ver original
  1. <ul>
  2.       <li><a href="#"><i class="icon-home"></i> INICIO</a><span></span></li>
  3.       <?php
  4.         $categorias = mysql_query("SELECT * FROM categorias");
  5.         while ($categoria = mysql_fetch_assoc($categorias)) {
  6.           #  $categoria['categoria_madre'] = NULL;
  7.         if( is_null( $categoria['categoria_madre'] ) ){
  8.             $cate[ $categoria['categoria_id' ] ] ['super'] = $categoria['categoria_nombre'];
  9.           }
  10.           else{
  11.            $cate[ $categoria['categoria_madre' ] ] ['sub'] [ $categoria['categoria_id'] ] = $categoria['categoria_nombre'];
  12.           }
  13.         }
  14.         ?>
  15.         <li><a href="#">TIENDA ONLINE</a><span></span>
  16.              <ul>
  17.         <?php
  18.         foreach($cate as $k=>$c ){
  19.             //si en el array no existen sub
  20.                 if( !array_key_exists('sub', $c)) {
  21.                     ?><li><a href="productos.php?categoria_id=<?php echo $k; ?>"><?php echo $c['super']; ?></a></li>
  22.                     <?php } else { ?>
  23.                     <li><a href="productos.php?categoria_id=<?php echo $k; ?>"><?php echo $c['super']; ?></a>
  24.                         <ul>
  25.                             <?php foreach($c['sub'] as $kk=>$cc){
  26.                                 ?><li><a href="productos.php?categoria_id=<?php echo $kk; ?>"><?php echo $cc; ?></a></li>
  27.                                 <?php } ?>
  28.                         </ul>
  29.                     </li>
  30.                     <?php
  31.                 }
  32.         }
  33.         ?>
  34.              </ul>
  35.         </li>
  36. </ul>

Etiquetas: categorias, lista, mysql, subcategorias, tabla
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:54.