Ver Mensaje Individual
  #7 (permalink)  
Antiguo 08/08/2014, 04:12
alx1417
 
Fecha de Ingreso: enero-2011
Ubicación: Barcelona
Mensajes: 36
Antigüedad: 13 años, 10 meses
Puntos: 5
Respuesta: Categorias, Subcategorias y Recursividad

Habersi esto te sirve, a mi me funcionó.

Código PHP:
Ver original
  1. <?php
  2. $arrCategorias=array();
  3. $arrCategorias[0]=array('id_categoria'=>'1', 'id_cat_principal'=>'0', 'nombre'=>'Deportes');
  4. $arrCategorias[1]=array('id_categoria'=>'2', 'id_cat_principal'=>'0', 'nombre'=>'Sociedad');
  5. $arrCategorias[2]=array('id_categoria'=>'3', 'id_cat_principal'=>'2', 'nombre'=>'Economia');
  6. $arrCategorias[3]=array('id_categoria'=>'4', 'id_cat_principal'=>'2', 'nombre'=>'Religion');
  7. $arrCategorias[4]=array('id_categoria'=>'5', 'id_cat_principal'=>'1', 'nombre'=>'Tierra');
  8. $arrCategorias[5]=array('id_categoria'=>'6', 'id_cat_principal'=>'1', 'nombre'=>'Mar');
  9. $arrCategorias[6]=array('id_categoria'=>'7', 'id_cat_principal'=>'5', 'nombre'=>'Futbol');
  10. $arrCategorias[7]=array('id_categoria'=>'8', 'id_cat_principal'=>'5', 'nombre'=>'Tenis');
  11. $arrCategorias[8]=array('id_categoria'=>'9', 'id_cat_principal'=>'7', 'nombre'=>'Futbol 7');
  12. $arrCategorias[9]=array('id_categoria'=>'10', 'id_cat_principal'=>'7', 'nombre'=>'Futbol 11');
  13. $arrCategorias[10]=array('id_categoria'=>'11', 'id_cat_principal'=>'0', 'nombre'=>'Test');
  14. $arrCategorias[11]=array('id_categoria'=>'12', 'id_cat_principal'=>'11', 'nombre'=>'Subtest');
  15. $arrCategorias[12]=array('id_categoria'=>'13', 'id_cat_principal'=>'12', 'nombre'=>'SubSubtest');
  16. $arrCategorias[13]=array('id_categoria'=>'14', 'id_cat_principal'=>'13', 'nombre'=>'SubSubSubtest');
  17.  
  18. imprime();
  19.  
  20. function imprime($padre=0){
  21.     global $arrCategorias;
  22.     //Validar que haya submenu (evita que se escriban <ul></ul> vacios).
  23.     $haySubMenu=false;
  24.     for($i=0; $i<count($arrCategorias) && !$haySubMenu; $i++){
  25.         $haySubMenu=$arrCategorias[$i]['id_cat_principal']==$padre;
  26.     }
  27.     if(!$haySubMenu) return;
  28.    
  29.     //Escribir listado.
  30.     echo "<ul>";
  31.         foreach($arrCategorias as $cat){
  32.             if($cat['id_cat_principal']==$padre){
  33.                 echo "<li>".$cat['nombre'];
  34.                 imprime($cat['id_categoria']);
  35.                 echo "</li>";
  36.             }
  37.         }
  38.     echo "</ul>";
  39. }
  40. ?>

Saludos, Alex.