Obvykle každá databáze obsahuje tabulky, jejichž obsah se velmi zřídka mění. Typickým příkladem je například seznam kategorií v databázi zboží. V takovém případě je zbytečné zatěžovat sever vykonáváním SQL dotazu při každém volání stránky. Místo toho si vygenerujeme soubor, který vložíme pomocí INCLUDE do stránky. Tento soubor pak stačí generovat pouze při změně příslušné tabulky.
- seznam kategorií, kde každá položka je odkazem na další stránku
- formulářový prvek SELECT, kde je možno vybrat si ze seznamu kategorií
Vytvoříme si tedy dva jednoduché skripty, které nám sestaví potřebné soubory a které si pomocí INCLUDE vložíme do stránky. Dnes začneme třeba tím seznamem kategorií – ten bude trošku jednodušší. Budeme se snažit napsat naše skripty obecně, aby byl tentýž skript použitelný na více místech ke generování různých seznamů. Proto si veškeré potřebné údaje přečteme na začátku skriptu z Requestu. To nám umožní zavolat tento skript s parametry pro vygenerování různých souborů. Budeme potřebovat tyto následující parametry:
data = request(„data“) ‚relativní cesta a název databáze sql = request(„sql“) ‚SQL dotaz, který vrací dva sloupce, první je url adresa, druhý je text odkazu file = request(„file“) ‚relativní cesta a název INCLUDE souboru target = request(„target“) ‚název okna, kam budou odkazy směrovány |
|
Samozřejmě, pokud nepotřebujete volat skript s různými parametry, můžete zadat hodnoty přímo. Začátek skriptu by pak vypadal třeba takto:
data = „data/zbozi.mbd“ sql = „SELECT ‚vypis.asp?kod=’+CSTR(kod), nazev FROM kategorie ORDER BY nazev“ file = „kategorie.inc“ target = „okno2“ |
|
Když se podíváte na SQL dotaz použitý v příkladu, vidíte, že celou adresu, kam odkaz bude směřovat, jsme si sestavili již s rámci SQL dotazu. Pro ty z vás, kteří se v SQL příliš neorientujete: dotaz vezme z tabulky kategorie sloupec kod, převede ho na řetězec (CSTR(kod)) a připojí k textu ‚vypiskategorie.asp?kod=‘, dále sloupec nazev, a vše seřadí abecedně podle sloupce nazev.
Dalším krokem je otevření textového souboru, kam budeme zapisovat:
Set fs = CreateObject(„Scripting.FileSystemObject“) Set soubor = fs.OpenTextFile(Server.MapPath(file), 2, true) |
|
Na prvním řádku si vytvoříme objekt FileSystem, na druhém řádku otevřeme příslušný soubor. To číslo dva, jako druhý parametr, znamená otevření pro zápis a true jako třetí parametr zajistí, že pokud soubor neexistuje, vytvoří se.
Nyní si otevřeme databázi a vytvoříme RecordSet:
set db = Server.CreateObject(„AdoDB.Connection“) db.Open „Driver={Microsoft Access Driver (*.mdb)}; DBQ=“ & Server.MapPath(data) & „;“ set rs = db.execute(sql) |
|
A nyní přijde vlastní sestavení souboru. V cyklu while – loop procházíme postupně celý RecordSet a zapisujeme jednotlivé řádky textového souboru. První sloupec recordsetu (rs(0)) přijde do parametru href, proměnná target do parametru target a druhý sloupec (rs(1)) je vlastní text odkazu.
do while not rs.EOF soubor.write „<a href=“““ & rs(0) & „““ target=“““ & target & „““> “ & rs(1) & „</a><br>“ & vbCrLf rs.moveNext loop |
|
Nyní už zbývá jen pozavírat Recordset, databázi i textový soubor a zrušit vytvořené objekty.
rs.close db.close set db = nothing soubor.close set fs = nothing |
|
Náš skript by měl vygenerovat soubor, který bude vypadat nějak takhle:
<a href=“stranka.asp?kod=1″ target=“okno2″> Auto</a><br> <a href=“stranka.asp?kod=2″ target=“okno2″> Moto</a><br> <a href=“stranka.asp?kod=3″ target=“okno2″> Traktory</a><br> |
|
Nyní můžeme vygenerovaný soubor vložit pomocí direktivy INCLUDE do stránky:
<!–#INCLUDE file=“kategorie.inc“–> |
|
Příště si sestavíme skript, ve kterém si sestavíme druhou variantu, formulářový prvek SELECT.