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.

  1. seznam kategorií, kde každá položka je odkazem na další stránku
  2. 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 whileloop 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.

Žádný příspěvek v diskuzi

Odpovědět