Foros del Web » Programando para Internet » PHP »

Ayuda con indentacion recursiva en categorias

Estas en el tema de Ayuda con indentacion recursiva en categorias en el foro de PHP en Foros del Web. Hola, primero decir que lei la funcion recursiva sobre categorias que esta en el faq del foro pero no me ayuda en este caso, intento ...
  #1 (permalink)  
Antiguo 15/02/2011, 17:06
 
Fecha de Ingreso: septiembre-2009
Mensajes: 54
Antigüedad: 14 años, 8 meses
Puntos: 0
Sonrisa Ayuda con indentacion recursiva en categorias

Hola, primero decir que lei la funcion recursiva sobre categorias que esta en el faq del foro pero no me ayuda en este caso, intento mostrar las categorias, sub cat, sub... etc en un combo box indentado, en otras palabras quiero mostrar las categorias asi:



bueno mi funcion va asi y funciona perfectamente mostrando todas las categorias y sub categorias de forma recursiva pero como dije arriba quiero indentarlo (dejarle espacios vacios a la izqquierda dependiendo el nivel que pertenezca)

Código PHP:
Ver original
  1. function getAllCategories($id_parent = 0){
  2.         $sql = mysql_query("SELECT * FROM `sys_categories` c INNER JOIN `sys_categories_lang` cl ON (c.`id_category`=cl.`id_category`) WHERE c.`parent`=".intval($id_parent)."  ORDER BY c.`id_category` ASC");
  3.         $result = array();
  4.         while($cat = mysql_fetch_assoc($sql)){
  5.             echo $cat['name'].'<br />';
  6.         getAllCategories($cat['id_category']);
  7.         }
  8.     }
  9.    
  10.     getAllCategories();

ya voy muchas horas intentando solucionar esto, espero que alguien me heche una mano para lograr mi proposito
desde ya les agradesco, Saludos
  #2 (permalink)  
Antiguo 15/02/2011, 18:25
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: Ayuda con indentacion recursiva en categorias

¿Y en que momento dejas los espacios en blanco?
Además, ese código no parece meter nada dentro de un select, y recuerda que en un texto html simple los espacios en blanco no se muestran.
  #3 (permalink)  
Antiguo 15/02/2011, 19:09
 
Fecha de Ingreso: septiembre-2009
Mensajes: 54
Antigüedad: 14 años, 8 meses
Puntos: 0
Sonrisa Respuesta: Ayuda con indentacion recursiva en categorias

Cita:
Iniciado por ocp001a Ver Mensaje
¿Y en que momento dejas los espacios en blanco?
Además, ese código no parece meter nada dentro de un select, y recuerda que en un texto html simple los espacios en blanco no se muestran.
exactamente quiero que me ayuden a dejar los espacios en blanco, bueno mi funcion por ahora imprime todas las categorias de esta forma (indentado):

Código:
Categoria 1
sub cat 1.1
producto X1
producto X2
subcat 1.2
Categoria 2
sub cat 2.1
producto XX
sub cat 2.2
y quiero que me ayuden a resolver como mostrarlo de esta forma:
Código:
Categoria 1
    sub cat 1.1
        producto X1
        producto X2
    subcat 1.2
Categoria 2
    sub cat 2.1
        producto XX
    sub cat 2.2
se que de alguna forma tengo que agregar espacios usando &nbsp; dependiendo el nivel pero aqui es donde me trabo, pienso agregar esos espacios a la primera sub-categoria, y si esta tambien tiene dentro una sub-categoria, agregarle el doble de espacios y asi sucesivamente y recursivamente y es donde me hago bolas

pero bueno me basta con mostrar las categorias y sub cat de la forma de arriba, ya luego se que yo podre implementarlo en un combobox, pero es necesario que sea recursivo, alguna sugerencia
  #4 (permalink)  
Antiguo 15/02/2011, 19:24
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Ayuda con indentacion recursiva en categorias

Lo único que tenes que hacer es pasarle por parámetro el nivel a tu función, y utilizar str_repeat, algo asi:

Código PHP:
Ver original
  1. function getAllCategories($id_parent = 0, $deep = 0){
  2.     $sql = mysql_query("SELECT * FROM `sys_categories` c INNER JOIN `sys_categories_lang` cl ON (c.`id_category`=cl.`id_category`) WHERE c.`parent`=".intval($id_parent)."  ORDER BY c.`id_category` ASC");
  3.     $result = array();
  4.     while($cat = mysql_fetch_assoc($sql)){
  5.        echo str_repeat('&nbsp;', $deep) . $cat['name'].'<br />';
  6.        getAllCategories($cat['id_category'], $deep++);
  7.     }
  8. }
  9. getAllCategories();


Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)

Etiquetas: categorias
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 00:41.