Ovo bi bio neki potpuno jednostavan primer koji je nezavisan od dubine nivoa na kojem su podredjeni. Redovi prvog nivoa (top) moraju imati parent=0. Prvom funkcijom zgrabis sve u visestruki niz a zatim drugom funkcijom (rekurzivnom) prolazis kroz taj niz i prikazujes podatke iz njega onako kako ti je potrebno. Nadam se da ce ti pomoci da dodjes do jos neke ideje.
Struktura podataka u tabeli :
Code:
+---+------------+--------+
| id ime parent
+---+------------+--------+
| 1 Zivotinje 0
| 2 Biljke 0
| 3 Sisari 1
| 4 Ptice 1
| 5 Ljudi 3
| 6 Kitovi 3
+---+------------+--------+
PHP kod:
Code:
class stabloX
{
var $stablo;
//funkcija koja kreira visestruki niz od podataka iz baze
function getArray()
{
$temp = array();
$query = mysql_query("select * from stavke order by id");
while($row = mysql_fetch_array($query))
{
$temp[$row['parent']][] = $row;
}
$this->stablo = $temp;
}
//rekurzivna funk koja kreira izgled stabla
function kreiraj($lid=0, $indent=0)
{
foreach($this->stablo[$lid] as $l)
{
$id = $l['id'];
$ime = $l['ime'];
$parent = $l['parent'];
//cisto zbog prikazivajna kako bi podredjeni
// bili malo uvuceni u odnosu na nadredjene
$razmak = str_pad("", $indent*36, " ");
$html .= "<b>".$razmak.$id.":".$ime."(nadredjeni :{$parent})</b><BR>";
if(array_key_exists($l['id'], $this->stablo))
{
$html .= $this->kreiraj($l['id'], $indent+1); //rekurzija
}
}
return $html;
}
}//kraj klase
$s = new stabloX;
$s->getArray();
print $s->kreiraj();
Rezultat:
Code:
1:Zivotinje(nadredjeni :0)
3:Sisari(nadredjeni :1)
5:Ljudi(nadredjeni :3)
6:Kitovi(nadredjeni :3)
4:Ptice(nadredjeni :1)
2:Biljke(nadredjeni :0)
edit: dodao sam i primer sa podacima radi lakseg snalazenja
[Ovu poruku je menjao brainbuger dana 11.06.2007. u 17:28 GMT+1]