All pastes #112725 Raw Edit

Anonymous

public text v1 · immutable
·published 2006-08-03 04:17 UTC
rendered paste body
$arrCategoryTree = array();
	            
while ($result_row = mysql_fetch_row($objRS)) {    
	$arrCategoryTree[] = array (
						'category_id' => $result_row[0],
						'parent_category_id' => $result_row[1],
						'category_name' => $result_row[2]
						);
}

//var_dump ($arrCategoryTree);

function tree($id_parent = 0, $indent = 0) 
  { 
      global $arrCategoryTree, $ret_tree; 
      $tt = array(); 
      $x = 0; 
      $loop = 0; 

      foreach($arrCategoryTree as $n) 
      {          
          if( $n['parent_category_id'] == $id_parent) 
          { 
              $tt[$x++] = $loop;   
          }   
          $loop++; 
      } 
      /*-- if there are some parent ids --*/ 
      if( $x != 0){              
          foreach($tt as $d) 
          { 
              $tmp = array(); 
               
              foreach($arrCategoryTree[$d] as $key => $value) 
              {                 
                  $tmp[$key] = $value;  
              } 
              $tmp['indent'] = $indent; 

              $ret_tree[] = $tmp; 
               
              tree($tmp['category_id'], $indent+1); 
          } 
      } 
      else 
      { 
          return; 
      } 
  } 

$ret_tree = array(); 

tree(0,0); 

 				
foreach($ret_tree as $cat)
{ 
    $indent = ''; 
    
    $indent .= str_repeat ("\t", $cat['indent']); 
   
    if ($intPreviousIndent <= $cat['indent'])
    	echo ("</category>\n");
    	
    	 
    echo ($indent .  $cat['category_name']);
    
    //target structure
    /*
    <category name="rootfolder" id="0">
		<category name="folder1" id="1"/>
		<category name="folder2" id="2">
			< category name="subfolder2.1" id="3"/>
		</category >
	</category >
	*/
    
    $intPreviousIndent = $cat['indent'];
} 

//var_dump($ret_tree);