Ver Mensaje Individual
  #46 (permalink)  
Antiguo 28/01/2014, 15:58
rakshaka
 
Fecha de Ingreso: mayo-2009
Mensajes: 166
Antigüedad: 15 años
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>