Pekný deň prajem všetkým,
Som tu nový, potreboval by som pomoc skúsenejších. Vypisujem strom klasicky z DB (Id, IdP, Name) pomocou rekurzie :
Kód:
<?php
function display_children($parent, $level) {
$r = "SELECT a.Id, a.Name, Deriv1.Count FROM `Tree` a LEFT OUTER JOIN (SELECT IdP, COUNT(*) AS Count FROM `Tree` GROUP BY IdP) Deriv1 ON a.Id = Deriv1.IdP WHERE a.IdP=".$parent." ORDER BY Poradie";
$result = mysql_query($r);
echo "<ul id='menu'>";
while ($row = mysql_fetch_array($result)) {
if ($row['Count'] > 0) {
if($row['Id'] != '-2147483647') {
echo "<li><a title='test' href='index.php?s=produkty&k=".$row['Id']."'>" . $row['Name'] . "</a> [ ".$row['Id']." ] ";
display_children($row['Id'], $level + 1);
echo "</li>";
}
} elseif ($row['Count']==0) {
/*
$Select = MySQL_Query("SELECT count(Id2) as Total FROM Tree WHERE Id = '".$row['Id']."'");
$Data = mysql_fetch_assoc($Select);
*/
echo "<li><a href='index.php?s=produkty&k=".$row['Id']."'>" . $row['Name'] . "</a> [ ".$row['Id']." ] ";
echo "</li>";
} else;
}
echo "</ul>";
}
display_children(0, 1);
?>
Funkcia robí čo má, vytvorí strom ktorý sa dá ďalej upravovať a vypisovať podľa potrieb. Avšak keďže v DB nemám uložené žiadne Url chcel by som ich generovať pomocou Id - čiek, síce budú škaredé ale aj to sa dá potom dotiahnuť.
Každá položka v strome pekne vedľa seba vypíše svoje Id, ja by som však potreboval aby každá položka vedľa seba vypísala aj Id všetkých položiek pred sebou. Určite sú aj jednoduchšie riešenia a znalejší to vedia.
Momentálne:
Kód:
-Hry [1]
--Counter Strike [2]
---Counter Strike 1.5 [3]
---Counter Strike 1.6 [4]
-Knihy [5]
--Programovanie [6]
---C++ [7]
---PHP5 [8]
...
Ja si predstavujem niečo takéto:
Kód:
-Hry [1]
--Counter Strike [1] - [2]
---Counter Strike 1.5 [1] -[2] - [3]
---Counter Strike 1.6 [1] -[2] - [4]
-Knihy [5]
--Programovanie [5] - [6]
---C++ [5] - [6] - [7]
---PHP5 [5] - [6] - [8]
...
S tých Id čiek si potom budem vedieť postaviť konkrétnu cestu.
Všetkým ochotným vopred Ďakujem.
Joffi