WebToDate/Formuláře a katalogy/Tipy a návody
Problémy a chybová hlášení
V této kapitole jsou uvedeny nejčastější problémy a jejich možné příčiny.
Při pokusu o editaci dat katalogu v administračním rozhraní se zobrazí hlášení Nenalezen žádný záznam, přestože v datové tabulce katalogu nějaké záznamy jsou.
S největší pravděpodobností není nadefinováno žádné pole katalogu tak, aby se zobrazovalo v seznamu záznamů v administračním rozhraní. Alespoň pro jedno pole katalogu je třeba nastavit vlastnost Zobrazovat v seznamu při úpravách.
Při pokusu o editaci dat katalogu v administračním rozhraní se zobrazí seznam položek, ale na žádnou položku nelze klepnout a tím zobrazit editační formulář.
Pole, na které modul umístí odkaz na otevření editačního formuláře musí mít nastavenou vlastnost Odkaz na detail (může být i více než jedno).
Stránka pro zobrazení dat (seznam položek, detail položky apod.) zobrazuje chybové hlášení Katalog nebyl nalezen.
Důvodů může být více, nejčastější důvody jsou:
- Katalog nemá nastavený předpis
- Ve vlastnostech katalogu je nastaveno Data jsou přístupná pro čtení : Nikomu
Stránka pro zobrazení dat zobrazuje chybové hlášení Tato stránka není pro jazyk čeština nadefinována.
Daná stránka nemá nadefinovanou předlohu – je třeba ji nastavit v příslušném formuláři pro daný typ stránky v nabídce Nastavení.
V případě že se jedná o vkládání dat může jít navíc o více stránek, které nemají předlohu definovánu: v prvé řadě může jít o nastavení stránky Předloha pro vstupní stránku. Pokud je ovšem v definici katalogu zvoleno vytváření potvrzovací stránky, může jít o předlohu Předloha pro potvrzovací stránku. Stejně tak pokud je nastaveno odesílání na e-mailovou adresu, je třeba zkontrolovat, zda je definována předloha pro e-mail. Poslední možností je nastavení stránky zobrazované po úspěšném vložení dat. Funkce pro generování formuláře v nabídce Nástroje generuje do formuláře kód
<input type="hidden" name="returnurl" value="<!--WTD_CATALOGUE(LISTURL)-->"/>
To znamená, že finální stránka odpovídá zobrazení stránky daného katalogu, která zobrazuje seznam položek – tato stránka ale velmi často pro katalogy, do kterých se zadávají data formulářem nemá využití a není definována, proto je vždy třeba zkontrolovat správné nastavení tohoto pole returnurl.
Formáty importovaných dat a jejich vytvoření
V případě, že se importují data do modulu Formuláře a katalogy, jedná se zpravidla o data nacházející se ve formátu některé z kancelářských aplikací. Aplikace typu MS Excel či MS Access obsahují funkce pro exporty ve všech formátech, které tento modul podporuje. Pro volbu formátu platí následující doporučení:
- Formát DBF volte v případě, že texty v buňkách tabulky nejsou nikde delší než 255 znaků. U tohoto formátu je třeba zajistit, aby byly texty v souboru uloženy ve správném kódování češtiny�. Výhodou tohoto formátu je především to, že import s automatickým založením datové tabulky založí tuto tabulku v odpovídající struktuře s převzatými názvy sloupců a datovými typy sloupců.
- Formát XML je vhodný téměř ve všech případech – lze jej dobře zpracovávat na serveru i kontrolovat manuálně, obsahuje názvy polí, nejsou zde omezení na délku textu, lze použít různá kódování češtiny. V praxi je ovšem velmi vhodné pro tento formát nejprve ručně založit strukturu datové tabulky, do které se importuje. Jednotlivé řádky v XML souboru musí být odděleny elementem <row>. Použijeme-li např. XML export tabulky v aplikaci MS Access 2003, je použit jako oddělovač řádek (záznamů) element, který má stejný název jako exportovaná tabulka – náhrada tohoto elementu za element <row> je jediná akce, která je potřebná pro úspěšný import dat.
- Pokud používáme formát CSV, je rovněž doporučeno nejprve manuálně vytvořit příslušnou SQL tabulku. Při exportu je třeba pamatovat na to, že oddělovačem řádek jsou znaky pro konce řádek (CR + LF). Máme-li tedy v importovaných datech delší texty obsahující konce řádek, je třeba tyto texty umístit do uvozovek (což dělá např. aplikace MS Excel automaticky).
Vícenásobné použití předpisů
Definované předpisy lze použít i více než jednou, předpokladem je ale stejná struktura katalogu. Pokud je třeba publikovat více databází se stejnou strukturou, je výhodné použít jeden předpis. V tom případě je třeba důsledně v předlohách používat klíčová slova pro název katalogu, id katalogu apod., aby některá z předloh nebyla specifická pouze pro jeden katalog.
Analogicky je možné využít jeden předpis i pro vkládání dat do více katalogů se stejnou strukturou, vzhledem k tomu, že zobrazený formulář se pak může lišit v podstatě jen názvem katalogu, není tento způsob využití v praxi příliš častý.
Publikace databáze s obrázky
Pokud chcete publikovat databázi včetně nějakých obrázků (např. telefonní seznam s fotografiemi zaměstnanců), postupujte zhruba takto:
- Neukládejte obrázky přímo do databáze, uložte je jako jednotlivé soubory a do databáze vložte relativní cestu.
- Připravte adresář s obrázky a nakopírujte jej na server – obrázky budou pak např. v adresáři /images/osoby/.
- Připravte soubor k importu do katalogu (např. ve formátu dbf), vytvořte v něm sloupec nazvaný např. foto a do něj uložte hodnoty, které budou platnou relativní adresou obrázku na serveru (např. /images/osoby/novak.jpg).
- Ve stylu pro zobrazení seznamu položek (a případně v předloze pro zobrazení jedné položky) použijte IMG značku HTML vkládanou podmíněně tak, aby v případě, že záznam obrázek nemá nedošlo k vygenerování nevalidní cesty k obrázku, např. takto:
<!--WTD_IF_NOTNULL(foto, "<img src='<!--WTD_FC(foto)-->'>")-->
<!--WTD_IF_NULL(foto, "<div>Fotografie zaměstnance není k dispozici</div>")-->
Modul sám o sobě žádnou zvláštní podporu obrázků neobsahuje, s obrázky tedy nijak nelze pracovat (ve smyslu vkládání obrázků na server či jejich vybírání) ve formulářích pro editaci dat v administrační části apod.
Ve stránkách zobrazujících data nějakého katalogu můžeme chtít vytvořit písmenkovou navigační lištu, kde klepnutí na zvolené písmeno zobrazí seznam položek, kde obsah zvoleného pole katalogu začíná na dané písmeno. Lištu je třeba vytvořit ručně (nejlépe jako tělo nějakého fragmentu), který pak přiřadíme na příslušnou předlohu. Příklad takového HTML kódu je následující:
<a href="list.php?catalogueID=<!--WTD_CATALOGUE(ID)-->&searchin=begin&POLE=A">A</a>
|
<a href="list.php?catalogueID=<!--WTD_CATALOGUE(ID)-->&searchin=begin&POLE =B">B</a>
|
….
<a href="list.php?catalogueID=<!--WTD_CATALOGUE(ID)-->&searchin=begin&POLE =Y">Y</a>
|
<a href="list.php?catalogueID=<!--WTD_CATALOGUE(ID)-->&searchin=begin&POLE =Z">Z</a>
<úcode>
I když je v příkladu použito klíčové slovo pro ID katalogu, není obecně takováto lišta použitelná pro všechny katalogy – v URL se vyskytuje název pole, podle kterého se záznamy vypisují, v tomto příkladu je nazváno POLE, je třeba jej změnit podle skutečného názvu sloupce datové tabulky. To znamená, že stejná lišta je funkční pouze pro dva katalogy, které používají stejnou strukturu datové tabulky, resp. mají stejný název pole, podle kterého se mají záznamy vypisovat.
Zobrazování dat modulu na jiných stránkách webu
Zobrazení dat na jiné stránce
Data katalogů jsou uložena v databázových tabulkách, lze je tedy zobrazovat i na stránkách generovaných WebToDate pomocí funkce SQL seznamy. Např. data z tabulky popsané jako příklad v kapitole Jednoduchý formulář pro vkládání dat bychom zobrazily na zvolené stránce pomocí SQL seznamu definovaného následujícím dotazem:
SELECT ID, JMENO AS NADPIS, EMAIL AS LINKNADPIS, VZKAZ AS POPIS FROM KATDINFOZADOST
Sloupce tabulky se musí přejmenovat tak, aby vyhovovaly slovníku sloupců pro dotazy do databáze zpráv, proto je zde zvoleno JMENO AS NADPIS apod. Zároveň je vhodné dodržet příslušné datové typy – např. pokud máme v tabulce sloupec typu datum, je vhodné jej pojmenovat AS DATUM, pak je zajištěno korektní formátování na výstupu. Ve stylu formátujícím tento seznam bychom použili klíčová slova <!--WTD_F(ID)-->, <!--WTD_F(TITLE)-->, <!--WTD_F(TITLELINK)--> a <!--WTD_F(DESCRIPTION)--> - to jsou klíčová slova odpovídající názvům zvolených sloupečků.
Další popis možností těchto funkcí přesahuje rámce manuálu tohoto modulu a je možné jej nalézt v dokumentaci WebToDate.
Zobrazení vstupního formuláře na jiné stránce
Vstupní formulář pro vkládání dat do katalogu je možné umístit i na jinou stránku, než která je zobrazovaná skriptem iform.php (např. na úvodní stránku, do těla nějaké zprávy apod.). Je ovšem nutné si uvědomit následující:
- Data vždy zpracovává skript iform.php, proto musí být ve formuláři kompletní URL (/scripts/modules/catalogue/iform.php?catalogueid=5) včetně uvedení id katalogu, jiná stránka nebude správně interpretovat klíčové slovo pro ID katalogu.
- Formulář pak nesmí obsahovat žádná další klíčová slova tohoto modulu, např. typu WTD_FCI, musí jít o kompletně statický HTML kód formuláře.
- Formulář v kompletní podobě (s klíčovými slovy typu WTD_FCI) je vhodné použít i nadále v předloze pro vkládání dat pro skript iform.php – pokud totiž uživatel zadá nějaká data chybně, zobrazí se stránka skriptu iform.php s využitím předlohy pro vkládání dat, pokud by taková předloha neexistovala, uživatel by obdržel chybové hlášení a dál by nemohl pokračovat. Pokud by v předloze byla použita varianta formuláře bez klíčových slov modulu, zobrazil by se v takovém případě prázdný formulář bez chybových hlášení, což by bylo pro uživatele nepochybně nesrozumitelné.