Autor Zpráva
Bouda
Profil *
Zdravim,

Mam tabulku, ve ktere mam nasledujici sloupce:

`id` int(10) unsigned NOT NULL auto_increment, // id polozky
`name` varchar(255) collate utf8_czech_ci NOT NULL default '', // jmeno polozky
`id_id` int(10) unsigned NOT NULL default '0', // rodic polozky (pokud je 0, nema rodice)
`level` smallint(5) unsigned NOT NULL default '0', // zanoreni

potreboval bych skript, ktery mi vygeneruje zanoreny seznam, max. 3 urovne

- polozka
- podpolozka
- podpolozka
- podpodpolozka
- polozka

- polozka
- podpolozka
- podpodpolozka
- podpodpolozka
- polozka

vytvoril jsem si rekurzivni fci, ktera sice vytvori seznam, ale pouze s jednou urovni, kde pomoci trid jednotlivych polozek nastavuji jejich zanoreni (class="level1"...).


function create_menu ($index = 0, $level = 0) {

$sql_menu = mysql_query("SELECT `category`.`id`, `category`.`name`, `category`.`id_id
FROM `category`
WHERE
(`category`.`id_id`
LIKE '".$index."'
AND `category`.`level`<= '".$level."'
)
");

while ($menu = MySQL_Fetch_Array($sql_menu)) {
$main_menu .= "<li class="level".$menu["level"].""> ";
$main_menu .= "<a href="/".$menu["uri"]."/" title="".$menu["name"].""> ".$menu["name"]."</a>";
$main_menu .= "</li>";
$main_menu .= create_menu($menu["id"], $level);
}

return $main_menu;
}



Skousel jsem to upravit tak, aby to vytvorilo zanoreny seznam, ale vubec se mi to nedari. Neresil nekdo podobny problem? Diky
Bouda
Profil *
oprava, takhle to ma vypadat, navic v te funkci mi tam na novou radku nechtene skocily navic uvozovky se strednikem, nemaji tam byt.


- polozka
- podpolozka
- podpolozka
- podpodpolozka

- polozka

- polozka
- podpolozka
- podpodpolozka
- podpodpolozka
- podpolozka

tiso
Profil
1. pokiaľ chceš stromové menu tak Ti tá funkcia musí generovať aj <ul></ul>
2. nové submenu Ti musí vložiť pred </li> nie až po ňom
3. takto ako to máš voláš rekurzívne tú funkciu pre každú položku menu, nie len pre tie ktoré potrebuješ, oprav si to!!!
4. ďalšia nevýhoda tej funkcie je že vykonávaš veľké množstvo dotazov na databázu, lepšie je vybrať položky jedným dotazom...
Toto téma je uzamčeno. Odpověď nelze zaslat.

0