To nie jest takie trudne. Musisz mieć tylko pobrać dane i posiadać odpowiednią klasę. Przydał by się też rekursywny iterator, albo funkcja do tego...
Prosta klasa, której nie sprawdzałem. Ważne, żebyś załapał o co chodzi...
<?php
class ID {
public function __construct($iId) {
$this->id = $iId;
}
public function addChild(ID $child) {
if (isset($this->id[$child->getId()])) { throw new Exception();
}
$this->children[$child->getId()] = $child;
}
public function getChild($iId) {
return isset($this->children[$iId]) ?
$this->children[$iId] : null; }
public function getChildren() {
return $this->children;
}
protected $id;
protected
$children = array();}
?>
Dane pobierasz tak:
<?php
$idList = array(0
=> new Id
(0
)); if (!isset($idList[$row['poz1']])) { $idList[$row['poz1']] = new Id($row['poz1']);
}
if (!isset($idList[$row['poz2']])) { $idList[$row['poz2']] = new Id($row['poz2']);
}
$parents[$row['poz2']] = $row['poz1'];
}
foreach ($parents as $child => $parent) {
$idList[$parent]->addChild($idList[$child]);
}
?>
Wyświetlanie najlepiej w postaci rekursywnego iteratora albo funkcji rekursywnej...