Databázová agenda
Obsah
Úvod
Databázové agendy jsou v T-MapServeru nejvíce využívány pro vyhledávání prvků
v mapě a pro zobrazování popisných informací o mapových prvcích. Typická databázová
agenda je postavena nad jednou tabulkou v libovolné databázi podporované v PHP. Tato
agenda umožňuje prohlížet celou tabulku i jednotlivé záznamy, které se dají editovat
a také přidávat nové.
Vytvoření agendy
-
Vytvoření adresáře a identifikátoru agendy
Pro každou agendu je potřeba vytvořit adresář, kde se budou nacházet potřebné skripty
a konfigurační soubory. Adresář se může nacházet téměř kdekoliv v podstromu kořenového
adresáře T-MapServeru, my doporučujeme tento adresář vytvářet v podadresáři ost
adresáře mapového projektu, pokud se jedná o agendu využitou pouze v daném projektu. Pokud
se jedná o agendu pro více projektů, doporučujeme podadresář ost kořenového
adresáře T-MapServeru.
Agendě potom přiřadíme identifikátor (řetězec používající znaky "A-Z" a "_") a provedeme
konfiguraci souboru
agenda_path.inc, kde
identifikátoru agendy přiřadíme
adresář agendy s relativní cestou od kořenového adresáře T-MapServeru.
Příklad
Pro náš mapový projekt TMS_DEMO jsme vytvořili databázovou agendu DEMO_ULICE_HK pro vyhledávání
ulic v mapě. Nejdříve v adresáři projektu vznikl adresář ost/ulice_hk, a pak
jsme provedli konfiguraci souboru agenda_path.inc. Agendu jsme nazvali
DEMO_ULICE_HK a přiřadili jsme ji adresář tms/examples/example1/ost/ulice_hk.
-
Zkopírování prototypu agendy na vyhledávání
Z adresáře ost/examples/prototype_search zkopírujeme všechny soubory a adresáře
do adresáře vznikající agendy. PHP skript edit.php vytváří formulář agendy,
skript brow.php zobrazuje tabulku záznamů a v adresáři .admin se nacházejí
konfigurační soubory,
-
Nastavení databázového konektoru
V adresáři .admin/db databázové agendy se nachází konfigurace konektorů na
databázi. Nás bude zajímat soubor db_agenda.inc, kde je nastavena cesta
k DBF souborům nebo název databáze, přístupový účet a heslo.
Příklad
V naší agendě DEMO_ULICE_HK je nastaven adresář k DBF souborům mapových dat (mapový
projekt demo mapového serveru MapServer), nad kterýma
lze provádět jednoduché vyhldávání.
-
Konfigurační soubory agendy
Agenda má tři základní konfigurační soubory a nacházejí se v adresáři .admin.
Nejdůležitější je soubor properties.inc, kde se nachází identifikátor agendy,
tabulka, nad kterou agenda pracuje, název agendy atd. Konfigurační soubor
form_schema.inc nastavuje, jak bude vypadat formulář pro vyhledávání, a
konfigurační soubor table_schema.inc popisuje tabulku, kde se budou zobrazovat
výsledky hledání. Podrobný popis těchto konfiguračních souboru naleznete v dalších
částech dokumentu.
-
Přidání agendy do mapového klienta
V mapovém klientu můžeme tuto agednu přidat do
seznamu odkazů na spolupracující
aplikace a používat ji pro vyhledávání v mapě.
Konfigurace agendy
Konfigurační soubor properities.inc obsahuje základní nastavení agendy. Tato
nastavení jsou popsána ve vlastnostech asociativního pole PROPERTIES.
Vlastnosti pole PROPERTIES:
-
AGENDA_NAME - název agendy (popis)
-
AGENDA_TABLE - jméno tabulky v databázi, nad kterou pracuje agenda
-
AGENDA_ID - název atributu v tabulce, který jednoznačně identifikuje záznam
-
AGENDA_IDENT - identifikátor agendy
-
BROW_ORDER_BY - název atributu, podle kterého se má tabulka záznamů třídit
Ukázka nastavení
$PROPERTIES = array(
"AGENDA_NAME" => "Ulice - Hradec Králové",
"AGENDA_TABLE" => "anno_ul",
"AGENDA_ID" => "ULICE_ID",
"AGENDA_IDENT" => "DEMO_ULICE_HK",
"BROW_ORDER_BY"=>"NAZEV"
);
Konfigurace tabulky záznamů
Konfigurační soubor table_schema.inc obsahuje nastavení pro generování tabulky záznamů
pomocí skriptu brow.php. Tato nastavení se nachází v asociativním poli TABLE_CONFIG a
obsahují vlastnosti pro vzhled buněk tabulky a seznam sloupců s popisem, jak se mají zobrazovat
hodnoty těchto sloupců.
Vlastnosti pole TABLE_CONFIG:
-
cellspacing - velikost mezery okolo buňky
-
cellpadding - velikost
-
border - tloušťka čáry okolo buněk
-
callback - název funkce volané pro každý řádek
-
schema - seznam sloupců a jejich vlastnosti
Vlastnosti sloupce:
-
field - obsahuje název sloupce databázové tabulky nebo volání uživatelské funkce (parametry
funkce mohou obsahovat více sloupců tabulky)
-
label - popis sloupce výstupní tabulky
-
add - html kód, který se má přídat do elementu TD
-
class - třída stylu, který se má použít pro daný sloupec
-
width - šířka sloupce
Seznam základních uživatelských funkcí
-
ShowMap - funkce ShowMap(interface_id,values) obsahuje dva parametry. První parametr
obsahuje název vlastnosti pole MAP_INTERFACE,
kde jsou nastaveny další parametry pro komunikaci
s mapou. Druhý parametr nastavuje parametr Values
komunikačního rozhraní T-MapServeru.
Konfigurace funkce Table
V skriptu brow.php je volána funkce Table, která generuje tabulku záznamů. Zobrazení této tabulky a její
funkční prvky lze ovlivnit několika parametry, které jsou obsahem asociativního pole, jež je vstupním parametrem
funkce Table.
Parametry funkce Table:
-
agenda - identifikace agendy (AGENDA_IDENT) [řetězec, přednastaveno: agenda, ke které patří brow.php]
-
tablename - jméno tabulky pro rozlišení ve formuláři, má význam pouze pro více tabulek na jedné stránce [řetězec]
-
nopaging - tabulka bude bez stránkování [logická hodnota, přednastaveno: false]
-
showcount - zobrazovat počet záznamů [logická hodnota, přednastaveno: true]
-
showselect - zobrazovat výběrové zaškrtávací políčko [logická hodnota, přednastaveno: false]
-
multipleselect - pro výběr se zobrazuje zaškrtávací políčko (vícenásobný výběr) jinak výběrové políčko (typ radio) [logická hodnota]
-
showinfo - zobrazovat funkční prvek pro získání podrobných informací o záznamu [logická hodnota, přednastaveno: true]
-
showedit - zobrazovat funkční prvek pro editaci záznamu [logická hodnota, přednastaveno: true]
-
showdelete - zobrazovat funkční prvek pro mazání záznamu [logická hodnota, přednastaveno: true]
-
showquide - je tabulka součástí průvodce [logická hodnota, přednastaveno false]
-
showself - zabrazovat funkční prvek pro odkaz na sebe sama [logická hodnota, přednastaveno: false]
-
showselfurl - hodnota pro odkaz na sebe sama [řetězec]
-
showselftarget - hodnota pro cílové okno na sebe sama [řetězec]
-
nocaption - výpis bez titulku tabulky [logická hodnota]
-
caption - hodnota pro titulek tabulky [řetězec]
-
sql - přímý SQL dotaz [řetězec]
-
setvars - nastavení proměnných pro další využití [logická hodnota, přednastaveno: false]
-
unsetvars - smazání obsahu proměnných na konci výpisu tabulky, parametrem může být i
asociativní pole s vlastností except, která obsahuje názvy proměnných,
které mají zůstat nastaveny [logická hodnota nebo pole]
-
formvars - pole obsahující názvy globálních proměnných nebo asociativní pole,
tyto hodnoty se přidají jako skryté do formuláře [pole]
-
formvars_decode - neprovádět u skrytých prvků url-dekódování [logická hodnota, přednastaveno: true]
-
appendwhere - doplnění WHERE klauzule [řetězec]
-
noaccesscondition - přeskočení přístupových práv [logická hodnota, přednastaveno: false]
-
showrefresh - zobrazit tlačítko Obnovit [logická hodnota, přednastaveno: false]
-
showstatistics - zobrazit tabulku se statistickými údaji, pokud je k dispozici [logická hodnota, přednastaveno: true]
-
showback - zobrazit tlačítko Zpět (1-frame, 2-parent); funguje za předpokladu, že true = 1 [číslo, přednastaveno: 0]
-
align - nastaveno align=100% [logická hodnota, přednastaveno: true]
-
maxnumrows - maximalní počet řádků pro nestránkovaný výpis [číslo, přednastaveno: 100]
-
emptyoutput - v případě zcela prázdné tabulky nevrátí nic, ani titulek tabulky [logická hodnota]
-
select_id - název sloupce, jehož hodnota se má vložit do SELECT_ID [řetězec]
-
showinfo_extra - přidí do url pro volání podrobných informací o záznamu, co je zde uvedeno [řetězec]
-
image_dir - adresář, kde jsou uloženy obrázky pro info, edit, delete [řetězec]
-
script_extension - přípona pro odkazy na info, edit, delete [řetězec]
Příklad:
Table(array("showdelete"=>false, "showedit"=>false, "showinfo"=>false));
Ukázka nastavení table_schema.inc
<?
$TABLE_CONFIG = array(
"map" => true,
"schema" => array(
array("field"=>"NAZEV", "label"=>"Název"),
array("field"=>"ShowMap('ulice_anno',ULICE_ID)", "label"=>" ", "add"=>"align=center", "class"=>"image", "width"=>"1%")
)
);
?>
Konfigurace formuláře
Ukázka nastavení form_schema.inc
<?
$FORM_CONFIG = array(
"map"=>true,
"client_lang"=>true,
"schema"=>array(
array(
"visible"=>($form_params["formtype"]==$f_filter),
"label"=>$PROPERTIES["AGENDA_NAME"]
),
array(
"elements"=>array(array("type"=>"text","name"=>"NAZEV","size"=>35)),
"visible"=>($form_params["formtype"]==$f_filter),
"label"=>"Název:"
)
)
);
?>