Ho aggiornato la classe in questo modo prima di leggere il post
Codice PHP:
class AbstrCategories
{
function AbstrCategories()
{
// Array che conterrà l'albero
$this->categories = array();
} // END Categories
function output()
{
while (list($name, $id) = each ($this->_tree()))
{
echo $name . ' [' . $id . ']
';
}
}
///// METODI PRIVATI /////
function _tree($id = 0 , $name = '' , $level = 0)
{
$query = "SELECT id , name , parent FROM categories WHERE parent = $id ORDER BY name";
$result = mysql_query($query);
while ($this->row = mysql_fetch_array($result))
{
$this->_buildCategoryName($id , $name , $level);
// Ricorsione
$this->_tree ($this->row['id'],$name,$level+1);
}
return $this->categories;
} // END function tree
function _buildCategoryName($id , $name , $level)
{
$name = str_repeat("",$level) . $this->row['name'] . "\n";
$this->categories["$name"] = $this->row['id'];
} // END function _buildCategoryName
}
Codice PHP:
class CategoriesOption extends AbstrCategories
{
function CategoriesOption()
{
parent::AbstrCategories();
} // END Categories
function output()
{
while (list($name, $id) = each ($this->_tree()))
{
echo '<option value="' . $id . '">' . $name . '</option>';
}
}
}
Credi che debba definire prima una classe generale ma onestamente questa è la prima classe che faccio e quindi non sono ancora molto pratico. Secondo te come potrei migliorarla?