Internet klienti v 602SQL – špeciality
V poslednom článku o internet klientoch v 602SQL vám ukážem niekoľko špeciálnych prípadov práce s WBIK – prácu so súbormi, s cookies a s fulltextom.
Práca so súbormi
602SQL umožňuje okrem obvyklých číselných a textových dát aj ukladanie obecných dát. Ide o typ v SQL označený ako LONG VARBINARY
, v klientskom rozhraní ako OLE
alebo BLOB
. V ňom je možné priamo vkladať súbory (dokumenty, tabuľky, obrázky atď.) do tabuliek až do veľkosti 16 MB. WBIK umožňuje špeciálnym postupom uložiť súbor do databázy ako aj zobraziť jeho obsah. Postup uvediem na konkrétnom príklade. Najprv vytvoríme tabuľku obrazky
:
CREATE TABLE `OBRAZKY` (
`OBR1` LONG VARBINARY )
Na vloženie súboru (v našom prípade obrázku) môžeme vytvoriť v klientskom prostredí formulár, smerujúci do tejto tabuľky. Vo formulári vložíme do tabuľky jeden záznam a ďalej vytvoríme WBC konektor s názvom obraz1
:
SQLStatement: obrazok1
+ SELECT obr1
+ FROM Obrazky
+ LIMIT 1
EndSQL
Content-type: „application/octet-stream“
SendFile: obrazok1.obr1
Zobraziť obrázok v šablóne môžeme takto:
<IMG SRC=“<%wb_url%>/obraz1.wbc“>
Obrázok môžeme pomocou WBIK do tabuľky aj vložiť. Vo vstupnom formulári použijeme nasledujúci formulárový prvok:
<FORM METHOD=“POST“ ACTION=“/cgi-bin/602cgi8.exe/db/app/pridajobr.wbc“ ENCTYPE=“multipart/form-data“>
Vyberte súbor:
<INPUT TYPE=“FILE“ NAME=“subor“>
<BR>
<INPUT TYPE=“SUBMIT“ VALUE=“Poslať“>
</FORM>
Formulár sa odvoláva na WBC konektor pridajobr
, ktorý môže vyzerať takto:
SQLStatement:
+ INSERT INTO Files(content,filename,content_type)
+ VALUES (:<subor,“%subor_filename%“,“%subor_content_type%“)
Obsah odosielaného súboru je v premennej subor
. K nemu sa pridávajú prípony _filename
a _content_type
na označenie názvu a MIME typu posielaného súboru.
Cookies
Vytvoriť cookie môžeme špeciálnym príkazom Set-cookie
v konektore. Vytvorme napríklad cookie s názvom kolacik
s dobou platnosti jeden rok:
Set-cookie: kolacik=“%hodn%“ ; expires=%current_timestamp%+31536000
Premenná hodn
je nejaká vstupná (a textová, lebo je uvedená v úvodzovkách) formulárová premenná alebo premenná WBIK. Jej obsah naplníme do obsahu cookie. Číslo 31536000
je počet sekúnd za obdobie 365 dní. Obsah cookie zobrazíme pomocou mena, vytvoreného z prefixu http_cookie_
a z mena konkrétneho cookie, v našom prípade to (v šablóne) bude:
<%HTTP_COOKIE_kolacik%>
V prípade, že nám nestačí jediný cookie, ale potrebujeme vytvoriť samostatný cookie ku každému záznamu z tabuľky, môžeme v Set-cookie
použiť výraz:
Set-cookie: kolacik%id%=“%hodn%“ ; expires=%current_timestamp%+31536000
V tomto prípade id
predstavuje meno kľúča z uvedenej tabuľky. Na hodnotu takéhoto cookie sa v konektore odvoláme pomocou:
HTTP_COOKIE_kolacik%id%
Pretože v šablóne by došlo k zdvojeniu znaku %
, musíme pre zobrazenie obsahu takéhoto cookie použiť v konektore príkaz DeclareVariable
:
DeclareVariable: qcookie:=HTTP_COOKIE_kolacik%id%
Cookies sa dajú vytvoriť aj v šablóne pomocou elementu META, napríklad:
<META HTTP-EQUIV=“Set-Cookie“ CONTENT=“kolacik=<%hodn%>; EXPIRES=<%CURRENT_TIMESTAMP+31536000;cookieexpires%“>
Premenná hodn
je opäť vstupná premenná. V takomto prípade tiež nie je problém vytvoriť cookie ku každému záznamu tabuľky:
<META HTTP-EQUIV=“Set-Cookie“ CONTENT=“kolacik<%id%>=<%hodn%>; EXPIRES=<%CURRENT_TIMESTAMP+31536000;cookieexpires%“>
Aplikovanie fulltextu
Fulltext vo WBIK sa používa podobným spôsobom ako v ostatných častiach aplikácie. Aplikáciu si ukážeme na konkrétnom príklade. Najprv vytvoríme v aplikácii fulltext, ktorý bude indexovať príkladovú tabuľku knihy. Procedúrou na serveri fulltextový systém založíme a jednorázovo zaindexujeme všetky záznamy v tabuľke:
PROCEDURE Vytvorfulltext();
BEGIN
DECLARE pom_text CHAR(101);
CALL Fulltext_create(‚.KNIHA‘,’basic_form=1;language=1;weighted=0′);
FOR riadok AS cur INSENSITIVE CURSOR FOR
SELECT *
FROM Knihy
DO
BEGIN
SET pom_text = riadok.nazov + ‚ ‚ + riadok.napisal;
CALL Fulltext_index_doc(‚.KNIHA‘, riadok.id, pom_text, ‚TXT‘, 0);
END;
END FOR;
END
V procedúre je zavolaná funkcia Fulltext_create
, ktorá v aktuálnej aplikácii vytvorí fulltextový systém s názvom KNIHA
. Následne sa pre všetky riadky tabuľky Knihy
vykoná zaindexovanie funkciou Fulltext_index_doc
, pričom indexujú sa naraz dva stĺpce nazov
a napisal
.
Pre vyššie uvedený príklad môžete vyhľadávaciu podmienku v konektore napísať nasledovne (hladajtxt
je vstupná premenná pochádzajúca zo šablóny, ktorá konektor zavolala):
+ SELECT *
+ FROM Knihy
+ WHERE (Fulltext(‚.KNIHA‘, Knihy.id, ‚%hladajtxt%‘)
Záver
Séria článkov, ktorej poslednú časť ste práve dočítali, mala za úlohu oboznámiť vás teoreticky aj prakticky s jazykom WBIK. Podrobnejšie informácie hľadajte v elektronickej nápovede alebo na webe Software602.
Výhodou riešenia internetových aplikácií v kombinácii 602SQL + WBIK je fakt, že programátor si môže prácu zjednodušiť tým, že zložitejšie časti (napr. funkcie správy aplikácie) vytvorí v rozhraní pre Windows. Tvorba ovládacích prvkov klientskej aplikácie (hlavne formulárov) je totiž rýchlejšia a menej náročná ako programovanie pre internet, ktoré ešte stále vyžaduje prácu s textami v zdrojovom tvare. Naopak určitou nevýhodou môže byť celkovo menšia rozšírenosť 602SQL ako iných riešení, napríklad PHP alebo ASP.
Mohlo by vás také zajímat
-
Chcete jedinečnou doménu? Objevte koncovky FOOD, MEME a MUSIC!
7. listopadu 2024 -
Webový správce souborů Filestash – dojmy a recenze
29. července 2024
Nejnovější
-
Jak chránit webové stránky před Web/AI Scrapingem
27. listopadu 2024 -
Jaký monitor je nejlepší k novému Macu Mini?
25. listopadu 2024 -
Výkonný a kompaktní: ASOME Max Studio s výjimečným poměrem cena/výkon
11. listopadu 2024 -
Šokující data od Microsoftu: Kyberútoky rostou o stovky procent!
8. listopadu 2024