Dobry den,
mam nasledujici tabulku
CREATE TABLE `stranky` (
`id` smallint(6) NOT NULL auto_increment,
`nazev` varchar(100) NOT NULL default '',
`parent_node` varchar(10) NOT NULL default '0',
PRIMARY KEY (`id`)
)
kde parent_node je rodic nadrazene stranky. Jedna se o klasicky katalog stranek
napr. s temito daty:
1 | Home | 0
2 | O firme | 1
3 | Kontakt | 1
4 | Historie | 2
touto rekurzivni funkci vypisuju vsechny stranky katalogu
function generate_pages ($parent) {
$sql = 'SELECT * FROM stranky
WHERE parent_node LIKE "'.$parent.'"
';
$q = MySQL_Query($sql) or Die("error generate menu pages");
$u = '';
while ($r = mysql_fetch_array($q)) {
$u .= '<tr><td>';
$u .= get_level_path($r['id']).' <a href="#">'.$r['nazev'].'</a>';
$u .= '</td></tr>';
$u .= generate_pages($r['id']);
}
return $u;
}
a touto zjistuji uroven stranky vudci nejvysimu rodici
function get_level_path ($id) {
global $lev;
if(!isset($lev)) $lev = 0;
$result = mysql_query('SELECT * FROM stranky
WHERE id="'.$id.'"'
)
or die("error path stranky 1");
$row = mysql_fetch_array($result);
$parent = $row['parent_node'];
if(!$parent == 0) {
get_level_path($parent);
$lev++;
}
return $lev ;
pokud volam get_level_path(4) - tak mi to vrati 2, coz je spravne
pokud uz to pouziji v druhe rekurzivni funkci, zjistuje to level dane stranky spatne
generate_pages (1) vrati
1 O firme
3 Historie
4 Kontakty
spravne by melo byt
2 O firme
3 Historie
2 Kontakty
dekuji za radu