Foros del Web » Programando para Internet » PHP »

Recursión de un unsorted list

Estas en el tema de Recursión de un unsorted list en el foro de PHP en Foros del Web. Hola gente, les escribo porque necesito ayuda con una función recursiva El objetivo de la misma es mostrar un numero indefinido de categorias anidadas en ...
  #1 (permalink)  
Antiguo 15/01/2008, 19:37
 
Fecha de Ingreso: octubre-2004
Ubicación: En algún lugar de la República Oriental del Uruguay
Mensajes: 366
Antigüedad: 20 años, 1 mes
Puntos: 0
Exclamación Recursión de un unsorted list

Hola gente, les escribo porque necesito ayuda con una función recursiva
El objetivo de la misma es mostrar un numero indefinido de categorias anidadas en <ul><li>

Estoy teniendo problemas en definir los tags de cierre (</>) de los <ul><li>
Esta es la función


Código PHP:
function list_tree($p 0){
  
$arrStr = array();
  
$db1 = new db_driver();
  
$db1->query('SELECT id, name FROM categories WHERE CatParentId ='.$p.' ORDER BY CatOrder');            
  if(
$db1->get_num_rows()>0){      
    if(
$p>0){//cuando es mayor a 0 definimos el siguiente ul
      
array_push($arrStr,'<ul style="display:none">');  
    }
    while(
$db1->fetch_row_object()){                
      
array_push($arrStr,'<li id="idtree_'.$db1->row->id.'" class="catnode">'.$db1->row->name);
      
//estos son los productos de una categoría
     //el siguiente if puden oviarlo ya que esta parte está bien, por lo tanto lo comento
      /*$db2 = new db_driver();                    
      $db2->query('SELECT products.* FROM products, prodcat WHERE products.id = prodcat.id AND prodcat.id ='.$db1->row->id.' AND products.idNOT IN (SELECT tickets.id FROM tickets, products WHERE tickets.id=products.id) ORDER BY ProdOrder'); 
      if($db2->get_num_rows()>0){
        array_push($arrStr,'<ul style="display:none">');
        while($db2->fetch_row_object()){
          array_push($arrStr,'<li id="id_'.$db2->row->ProdId.'" class="prodnode">"id_'.$db2->row->name.'"</li>');
        }
        array_push($arrStr,'</ul>');
      }//fin de los productos */     
      
array_push($arrStr,list_tree($db1->row->id))
        
array_push($arrStr,'</li>')
              
    }
    
array_push($arrStr,'</ul>');
  }   
  return 
implode('',$arrStr);


los <ul style="display:none"> están siendo cerrados muy despues de donde tendrían que ser cerrados


Se aceptan comentarios :)
__________________
ratamaster
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 12:15.