Hallo,
mit folgendem Code kann ich Teilbäume eines aktiven Links ($_GET['id']) öffnen. Wenn ich nun einen anderen Link anklicke, schließt sich der vorige und öffnet sich der aktuelle. Nun will ich, dass ich mehrere Bäume gleichzeit öffnen kann. Dazu befüllt ich einen Array mit id - Werten. Wie aber bringe ich das in den funktionen unter? Hat jemand eine Idee?
mit folgendem Code kann ich Teilbäume eines aktiven Links ($_GET['id']) öffnen. Wenn ich nun einen anderen Link anklicke, schließt sich der vorige und öffnet sich der aktuelle. Nun will ich, dass ich mehrere Bäume gleichzeit öffnen kann. Dazu befüllt ich einen Array mit id - Werten. Wie aber bringe ich das in den funktionen unter? Hat jemand eine Idee?
PHP-Code:
public function getTreePart($id) {
$sql = "SELECT n." . $this->pk . ", n." . $this->name . ", COUNT(*)-1 AS level, ROUND ((n.rgt - n.lft - 1) / 2) AS children FROM " . $this->table . " AS n, " . $this->table . " AS p WHERE n.lft BETWEEN p.lft AND p.rgt GROUP BY n.lft ORDER BY n.lft;";
$result = $this->db->query($sql);
if ($this->db->affected_rows == 0) {
return $this->error(1, true);
}
$tree = array();
$i = 0;
$level = count($this -> getPath($id));
while ($row = $result->fetch_assoc()) {
$last_id = $this -> getLastId($id,$row['level']); // $last_id und $id
muss nach Möglichkeit mehrere Werte parallel beinhalten
if($row['level'] == 0 OR ($level > $row['level'] AND
in_array($row[$this->pk],$this -> getForwardTree($last_id)))
OR ($level == $row['level'] AND is_array($this -> getForwardTree($id))
AND in_array($row[$this->pk], $this -> getForwardTree($id)))) {
$tree[$i] = $row;
$i++;
}
}
return $tree;
}
public function getForwardTree($id) {
$sql = "SELECT n." . $this->pk . "
FROM " . $this->table . " as n
JOIN " . $this->table . " as p
LEFT JOIN " . $this->table . " as q
ON q.lft < n.lft
AND q.rgt > n.rgt
AND q.lft > p.lft
AND q.rgt < q.rgt
WHERE p." . $this->pk . " = " . $id . "
AND n.lft > p.lft
AND n.rgt < p.rgt
GROUP BY n.lft
ORDER BY
n.lft;";
$result = $this->db->query($sql);
if ($this->db->affected_rows == 0) {
return $this->error(1, true);
}
$tree = array();
$i = 0;
while ($row = $result->fetch_assoc()) {
$tree[$i] = $row[$this->pk];
$i++;
}
return $tree;
}
Kommentar