Vytváření aplikací 602XML+602SQL+PHP
V této sekci se dozvíte nejpoužívanější obraty a techniky pro vytváření databázových webových aplikací využívajících jako výchozí program 602XML Filler. Tedy aplikací, jejichž frontendem je 602XML Filler komunikující pomocí HTTP(S) protokolu s 602SQL serverem (přes webový server Apache, pro testování nebo jednodušší intranetové aplikace lze využít emulace web serveru SQL serverem).
Pro plné pochopení této kapitoly a pro schopnost napsat podobnou aplikaci je třeba zvládnout několik prostředí a jazyků:
- Návrh XML formulářů pomocí programu 602XML Designer - viz dokumentace k tomuto programu;
- Jazyk PHP, zvláště pak PHP rozhraní k 602SQL serveru (v některých jednodušších případech lze vynechat a nahradit 602SQL WebXML rozhraním);
- Databázový backend 602SQL serveru (tj. návrh tabulek, domén, dotazů, programování triggerů a procedur v jazyce SQL) - viz kompletní kapitola Jazyk SQL;
- Návrh a použití DAD transformací pro XML přenosy, zvláště pak
602SQL XMLAPI - PHP funkce pro exporty a importy dat mezi tabulkami a XML.
Některé činnosti prováděné v těchto aplikacích lze programovat na více místech, obvykle uvnitř PHP skriptu pomocí klientských API funkcí nebo uvnitř SQL procedury zavolané jako celek z PHP skriptu. Oba způsoby mají svá pro i proti a je na úvaze vývojáře, který zvolí.
Záměrně zde neuvažujeme o případech, kdy (složité) PHP skripty nahrazují části DAD transformace (tedy uvnitř skriptu se provádí analýza a rozebírání XML a sestavování XML).
Mnohé případy použití (např. dynamický číselník v combu ve Filleru) není třeba vůbec programovat - stačí použít vhodné URL webového XML rozhraní 602SQL serveru pro tuto situaci - příklady jsou popsány na stránce Integrace formulářů s databází .
Použití 602SQL databáze pro XML formuláře
XML formuláře vytvářené 602XML Designerem lze napojit na databázi ve třech místech:
Data z 602SQL slouží jako:
- zdroj dat pro on-line číselník - požadavek se zadává v okně Možnosti formuláře, záložka Číselníky, tlačítkem Přidat, v parametrech číselníku je třeba zadat Nahrát data ze souboru, Aktualizovat data z odkazu a Data neukládat jako součást formuláře.
- zdroj dat, kterým se naplní formulář při otevření - požadavek se zadává v okně Možnosti formuláře, záložka Ostatní, vlastnost Soubor s XML daty.
- jako úložiště dat vyplněných ve formuláři a odeslaných pomocí tlačítka ve formuláři nebo na liště - požadavek se zadává na Pracovním panelu, záložka Odeslání dat jako parametr URL odesílacího profilu typu Odeslání pomocí HTTP požadavku.
Požadavek na 602SQL server zadaný při návrhu XML formuláře má jeden z následujících tvarů:
- odkaz na PHP skript, který vrátí vhodné XML nebo text na std. výstupu ve formátu UTF-8 a s vhodně nastavenou HTTP hlavičkou (viz příklad níže); např. http://localhost/php/save_order.php; - nejobecnější formát;
- pevný odkaz na 602SQL WebXML rozhraní, např. http://MujWeb.cz/602.php/MujServer/MojeSchema/DAD/get_order_data?ID=12345; má smysl, pokud formulář není uložen v databázi jako objekt;
- relativní odkaz zadaný výrazem se jménem serveru a schématu podle aplikace (schématu), z níž je čten formulář, např. $(Eval("StrCat(GetFormParam(/host_name),{/},GetFormParam(/host_path_prefix),{602.php/},GetFormParam(/host_sql_server),{/},GetFormParam(/host_sql_schema),{/DAD/get_order_data?ID=12345})")); pouze tehdy, když je formulář uložen v databázi jako objekt. Požadavek je funkční, i když se změní uložení objektů v databázi (např. importem na jiný server), na rozdíl od odkazu pevného. Tento výraz lze použít na všech třech místech formuláře, kde lze zadat požadavek.
Formát požadavků lze libovolně kombinovat i v rámci jednoho formuláře, např. požadavek na číselník mít zadán pomocí výrazu $Eval(...) a vlastní uložení dat do databáze pomocí PHP skriptu.
Uložení formulářů
XML formuláře vytvořené 602XML Designerem lze mít uložené jako
- soubory na disku;
- soubory ve struktuře webu;
- objekty typu XML formulář 602SQL databázi;
- obsah sloupce typu CLOB v tabulce v databázi.
Formuláře uložené v databázi mají výhodu, že s ostatními potřebnými objekty v aplikaci tvoří celek, lze je najednou exportovat a importovat a pokud jsou odkazy na HTTP požadavky zadané výrazem $Eval(...), tak jsou přenositelné mezi SQL servery bez úpravy.
Veškeré programování PHP skriptů s celými formuláři je výrazně jednodušší, jsou-li formuláře uložené v databázi.
Rozbor aplikací
Základní aplikace (neuvažujeme číselník ani vstupní data) vypadá asi takto:
- Uživatel v prostředí programu 602XML Filler vyplní XML formulář a odešle HTTP požadavek obsahující XML data webovému serveru.
- Webový server (preferujeme Apache) požadavek předá 602SQL serveru.
- 602SQL server analyzuje XML data, pomocí vhodného DAD provede import dat do tabulek nebo do proměnných a podle typu úlohy se přes web server vátí do Filleru:
- nový formulář naplněný novými daty - tj. vrací se kompletní FO nebo ZFO uložené v databázi s daty z nějaké DAD transformace;
- nová XML data do původního formuláře - tj. vrací se pouze výstup z DAD transformace;
- vrátí pouze textovou informaci do okna.