Anketa pro www stránky krok za krokem – zobrazování dat
V předcházejícím druhémn článku o tvorbě ankety jsme si vytvořili aplikaci, která umožňuje vkládat definované ankety do databáze. Dnes nastane nejdůležitější část tvorby ankety a to vlastní zobrazení ankety a možnost hlasovat.
Těm čtenářům, kteří nečetli předchozí dva díly tohoto seriálu, doporučuji nejprve přečíst články „Anketa pro www stránky krok za krokem“ a „Anketa pro www stránky krok za krokem – druhá část„.
Nejprve musíme z databáze vybrat anketu, kterou budeme zobrazovat. Jak již víme z předcházejících článků, budeme mít v databázi několik anket, které budou mít určeny datum začátku a datum konce. Na základě těchto údajů vybereme příslušnou anketu. Pro jednoduchost nepředpokládám, že by se jednotlivé ankety mohly časově překrývat.
SQL dotaz, pomocí kterého vybereme anketu, bude vypadat následovně:
|
Co vlastně tento dotaz udělá? Z tabulky vybere anketní otázku, která má datum zahájení stejný nebo menší než aktuální datum a současně datum ukončení není menší než aktuální datum. Protože pro další práci nepotřebujeme všechny položky z tabulky provedeme v dotazu výčet požadovaných položek.
Nyní máme k dispozici anketní otázku a idankety, ale co nám stále chybí, jsou odpovědi na anketní otázku a počty hlasů. Možné odpovědi na anketní otázku získáme následujícím dotazem:
|
V části WHERE je za rovnítkem použito číslo anketní otázky, které jsme získali v předchozím dotazu.
Pro zobrazení ankety budeme ještě potřebovat vědět, jaký je největší počet odpovědí na otázky. Tuto informaci můžeme získat dvěmi různými způsob:
- V cyklu „projet“ vybrané záznamy a zjistit maximum
- maximum zjistit přímo v dotazu
První způsob všichni určitě zvládnete a proto uvedu pouze ten druhý, který je podle mě mnohem rychlejší. Následující dotaz nám poskytne množinu záznamů, kde je kromě položek idopovedi, odpovedi a počtu hlasů také hodnota maximálního počtu hlasů:
|
Význam jednotlivých příkazů v SQL dotazu najdete v článku „Dotazy v SQL s agregací„.
Takže dost teorie kolem SQL dotazů a hurá na anketu ať nám ještě dneska funguje. Pro otevření práci s databází opět použijeme stejné funkce jako v minulém článku. Následující ASP kód umístěte do například do souboru anketa.asp, který potom pomocí INCLUDE vložíte do ASP astránky, ve které chcete použít anketu. Zobrazení ankety je provedeno jako funkce, která má jeden parametr, pomocí kterého určíte URL, kam má být návštěvník po hlasování přesměrován:
|
Mnozí z vás si asi položí otázku jakým způsobem je provedeno „natažení obrázku“ v anketě. Před vlastní zpracováním ankety provedeme na základě maximálního počtu hlasů určení konstanty pomocí které zpětně určíme, jak má být široký konkrétní obrázek. V našem případě je určeno, že obrázek bude široký maximálně 100 pixelů. Při zpracování ankety podle vypočtené šířky dynamicky měníme velikost příslušného obrázku (viz následující kód):
|
Anketu na www stránku na které ji chcete mít vložíte pomocí následujícího kódu:
|
Po hlasování v takto definované anketě je návštěvník přesměrován na stránku default.asp, která se nachází v koření web aplikace.
Nyní máme hotové vlastní zobrazení ankety na libovolné stránce a zbývá nám udělat ASP skript, který zajistí počítání jednotlivých hlasů a přesměrování na námi definovanou stránku. Následující kód umístěte do souboru hlas-anketa.asp:
|
Jak sami vidíte, hlasovací mechanismu je velice primitivní a nedělá nic jiného než aktualizaci záznamu v databázi a následné přesměrování na stránku, která byla předána jako parametr spolu s číslem odpovědi.
Předem předpokládám, že se najde spousta čtenářů, kteří mi budou psát ohledně možnosti návštěvníků v anketě neomezeně hlasovat. Existuje způsob, jak toto vícenásobné hlasování omezit, ale bohužel neexistuje způsob, jak tomuto „nešvaru“ čtenářů zcela zabránit. O tom, jak zakázat vícenásobné hlasování, budu psát (podle zájmu čtenářů) v některém z příštích dílů tohoto seriálu.
Nakonec samozřejmě máte možnost stáhnout prezentované kódy.
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
-
Nové trendy v doménách pro osobní projekty – DIY, LIVING a LIFESTYLE
9. prosince 2024 -
Responzivní design: Proč by ho neměl ignorovat žádný vývojář?
27. listopadu 2023 -
Webový správce souborů Filestash – dojmy a recenze
29. července 2024 -
Souboj na trhu s CPU pro servery: AMD vs. Intel
8. prosince 2023
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