Databáze kontaktů v PHP 3.
V minulých dvou dílech o tvorbě aplikace pro uchovávání kontaktů přes PHP jsme si navrhli databázi, připravili skript pro zadávání nových firem a osob a také zajistili uložení dat do databáze. Dnes si naprogramujeme skripty pro hledání firem. Skript bude umožňovat hledání podle názvu a města sídla firmy.
Vyhledávání firem
Pokud skladujete jakékoliv věci, časem zjistíte, že je potřebujete také rychle najít. A nejinak tomu bude i v naší aplikaci. Dnes si napíšeme skripty sloužící k vyhledání firmy podle zadání a zobrazení dat o ní. Vyhledávat bude možné podle 2 kritérií – název firmy a město. Pro ukázkovou aplikaci je to dostačující, v reálném provozu je dobré hledat i podle IČO/DIČ. Ve výsledcích vyhledávání zobrazíme základní údaje, tj. název firmy, adresu, telefon. Další údaje se zobrazí po kliknutí na ikonu detailu . Z výsledků hledání také můžeme mazat a editovat .
Ve vyhledávacím skriptu nejdříve nastavíme pomocné proměnné pro případné stránkování výpisu výsledků hledání.
- $cPage – aktuálně vypisovaná stránka
- $PageSize – počet řádků ve výpisu
- $dbCursor – záznam od kterého se vypisuje
- $maxRec – pouze pomocná proměnná pro LIMIT v SQL dotazu
- $isNext – příznak, který říká zda bude další stránka ve výpisu
Jak jsem již nahoře psal, výpis výsledků budeme stránkovat. A protože mě během psaní tohoto výukového skriptu napadl nový postup, jak to udělat, tak vám jej také předložím k posouzení. Ale o tom později, nejdříve vám musím ukázat tento kousek kódu:
|
Pokud zjistíme, že do skriptu byl odeslán obsah formuláře, tj. proměnná $Nazev nebo $Mesto jsou nastaveny, vložíme do proměnné $SQLText podmínky vyhledávání. Jelikož se jedná o „stringové“ proměnné, použijeme LIKE. A na pravou stranu hledaného výrazu přidáme %, jelikož chceme, aby se hledalo podle kořene slova. To, zda se bude prohledávat databáze, rozhodneme podle toho, zda je v $SQLText něco uloženo. Přece nebudeme zbytečně používat další proměnnou. Pokud je v $SQLText něco uloženo, vytvoříme spojení na databázi a vytvoříme SQL dotaz. Do něj vložíme podmínky pro hledání. Pak nastavíme limit pro stránkování. Limit nastavíme od $dbCursor s velikostí $maxRec. V $maxRec je uložena velikost stránky navýšená o 1. Tím se dostáváme k nápadu, který mě napadl a o kterém se zmiňuji na začátku článku. Pokud nastavíme limit o 1 větší než je velikost stránky a počet záznamů, který se nám vrátí, je větší než velikost stránky, víme, že podmínkám hledání vyhovuje více záznamů a tudíž budeme stránkovat.
Myslím si, že tato metoda při takto jednoduchém SELECTu asi nebude o moc lepší než COUNT(*), ale při JOINu atd. bude asi efektivnější. Také předpokládám, že jsem objevil již dávno vynalezené, takže mi za to do diskuse pod článkem nenadávejte:o). Pochopitelně, tato metoda neumožňuje vypsat počet stránek nalezených hledáním. Jedná se pouze o nápad, který nabízím k posouzení. Pro nastavení $isNextRec je použito ternárních operátorů, je zbytečné psát if.
Takže nyní pouze překopírujeme výsledek dotazu do pole $Vysledky ve standardním cyklu. A opět využijeme „autoindexace“ polí v PHP. Nyní je již na řadě vlastní stránka, opět vyberu pouze podstatné části, zbytek najdete ve zdrojových souborech připojených k tomuto článku.
|
Myslím, že vstupním formulářem se nemá vcelku cenu zabývat, jsou to vlastně dvě textová pole pro vložení hledaného textu a odesílací a tlačítko Reset. V části pro výpis výsledků hledání si nejdříve zjistíme, zda jsem na první (nulté) stránce výpisu. Pokud ne, zobrazíme šipku s odkazem, který vede na zobrazení předchozí stránky výsledků hledání. Pak zjistíme, zdali jsme na jsme na poslední stránce výpisu. Pokud ne, zobrazíme šipku doprava s odkazem na další stránku.
Ve výsledcích hledání zobrazíme název firmy, adresu a telefon. Pak následují aktivní ikonky pro zobrazení detailu, úpravu a smazání. Ale ty si probereme až přístě. Zdrojové soubory aplikace jsou ke stažení zde.
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Optimalizace a zlepšení výkonu kódu: tipy a triky
14. srpna 2023 -
Responzivní design: Proč by ho neměl ignorovat žádný vývojář?
27. listopadu 2023 -
Jak chránit webové stránky před Web/AI Scrapingem
27. listopadu 2024
Nejnovější
-
Jak rozšířit úložiště Macu za pětinovou cenu?
16. prosince 2024 -
Nové trendy v doménách pro osobní projekty – DIY, LIVING a LIFESTYLE
9. prosince 2024 -
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