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

  1. 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.
     
  2. 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,
     
  3. 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í.
     
  4. 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.
     
  5. 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:

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:

Seznam základních uživatelských funkcí

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: 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:"
    )
  )
);
?>