Muchas gracias por el aviso, realmente me han parecido muy interesantes los artículos, y me he decantado por hacer la recurrencia en el array y no en la base de datos, ha quedado asi:
Código PHP:
class listCategories{
var $childrenCategory = "";
var $table = "";
function main($mysql){
$sql = $mysql->query("SELECT id, name, previus FROM ".$this->table." ORDER BY name ASC");
while($result = $mysql->f_obj($sql)){
$list[] = array($result->id, $result->name, $result->previus);
}
foreach($list as $field){
if($field[2] == 0){
print "<div>".$field[1]."</div>";
$this->childrenCategory[$field[1]] = $this->children($list, $field[0], $field[1]);
}
}
}
function children($list, $previus, $previusName){
foreach($list as $value){
if($value[2] == $previus){
$this->childrenCategory .= " ".$value[1];
print "<div>".$previusName.$this->childrenCategory."</div>";
$this->children($list, $value[0], $value[1]);
}
}
}
}
Funciona exactamente igual, y efectivamente, solo hace una consulta a la bd.
Gracias!