Jak vytvořit kalendář v ASP – základ aplikace
Jak vytvořit kalendář v ASP? Dnes začíná zajímavý seriál, který se bude skládat s několika článků, na jejichž vznikne aktivní plánovací kalendář obsahující spoustou zajímavých a užitečných funkcí.
Co vše bude kalendář umět, záleží především na vašem zájmu a námětech, které mi pošlete na můj email. Kalendář se bude postupně, v každém díle zdokonalovat a budu do něj zapracovávat vaše náměty a připomínky. Výsledný rozsah kalendáře je tedy prakticky ve vašich rukou.
První informací, kterou potřebujeme pro vytvoření kalendáře, je počet dní v měsíci, který chceme zobrazit. Nyní si tedy popíšeme, jak tuto informaci rychle a jednoduše získat.
Kolik dní má měsíc?
Ke zjištění počtu dní v měsíci máme dvě možnosti. Buď si vytvoříme pole, ve kterém si pro každý měsíc uvedeme počet jeho dnů. Jenže zde ještě musíme ošetřit počet dní v únoru podle toho, zdali přestupný rok či nikoliv. Test přestupnosti roku provedeme pomocí funkce „Prestupny“, která byla publikována v článku Jak na datum a čas nejen v ASP III..
Jistě je vám všem známo, jak toto řešení realizovat a proto ho zde nebudu uvádět, protože jeho kód je poněkud delší a beztak bych ho v našem kalendáři nepoužil.
Uvedu zde řešení jiné, které je co do velikosti kódu kratší, zbavuje nás nutnosti mít pole s počty dnů (tím šetříme obsazenou paměť) a využívá vestavěných funkcí VBScriptu. K realizaci tohoto řešení potřebujeme funkci day (byla popsána v článku Jak na datum a čas nejen v ASP I.) a funkci DateAdd, která byla popsána v článku Jak na datum a čas nejen v ASP II..
Vtip tohoto řešení spočívá v tom, že se dotážeme na den před prvním dnem následujícího měsíce (tím pádem vlastně na poslední den požadovaného měsíce). Protože funkce Day a DateAdd – jak již víte z předcházejících uvedených článků – pracují bez problému s rokem 2000 a přestupnými roky, odpadá zde nutnost tyto stavy ošetřovat.
|
Pro ověření činnosti funkce zde mám příklad, který vypíše počty dní v jednotlivých měsících let 1995 až 2001. Na příkladu vidíte, jak vytvořit pomocí cyklu tabulku a naplnit ji hodnotami. Tuto metodu použijeme později při tvorbě tabulky pro kalendář.
|
Výsledek činnosti příkladu při použití funkce PocetDniVMesici:
<% Function PocetDniVMesici(ByVal mesic, ByVal rok) if mesic=12 then mesic=1 rok=rok+1 else mesic=mesic+1 end if PocetDniVMesici=day(dateadd("d",-1,"1."&mesic&"."&rok)) End Function font="“ Response.Write(„
„) Response.Write(„
„) Response.Write(„ |
„) %>
Nyní, když již známe počet dní v měsíci, můžeme se pustit do tvorby výpisu kalendáře. Pro výpis jednotlivých dní zvolíme tabulku o sedmi sloupcích. Počet řádků bude proměnný podle počtu dní v měsíci.
|
Všimněte si, že používám proměnnou pocetdni, do které si předem uložím počet dní v měsící a tuto proměnnou pak testuji v cyklu Do While.
Šla by sice použít konstrukce „do while index>=PocetDniVMesici(mesic,rok)“, ale provádění takového cyklu by bylo silně neefektivní, protože by se zbytečně volala funkce PocetDnivMesici při každém průchodu cyklem.
Jak naše nová funkce funguje, si předvedeme pomocí následujícho kódu, kterým si zobrazíme kalendář pro leden, únor a březen 2000.
|
Výsledek použití funkce kalendar1:
<% function kalendar1(mesic,rok) font="“ pocetdni=PocetDniVMesici(mesic,rok) index=1 tmp=“
“ tmp=tmp&“„&mesic&“/“&rok&““ tmp=tmp&“ | |
“ tmp=tmp&“
“ tmp=tmp&“ |
“ kalendar1=tmp end Function Response.Write (kalendar1(1,2000)) Response.Write(„
„) Response.Write (kalendar1(2,2000)) Response.Write(„
„) Response.Write (kalendar1(3,2000)) %>
Jak jistě vidíte, kalendář zde zobrazený má ještě spoustu nedostatků, které budeme postupně krok za krokem odstraňovat. Jeden z nedostatků v kalendáři je ten, že vlastně nevíme, který den je který. Proto si nejprve ukážeme, jak vyřešit tento problém.
Aby jsme se zbavili závislosti na nastavení systému, vytvoříme si funkci, která nám bude vracet dvojpísmenný název dne.
|
Jako další krok provedeme doplnění funkce pro tvorbu kalendáře a kód, který zajistí vypsání názvů dní do prvního řádku tabulky. Protože jde jenom o doplněk do již existující funkce, uvedu v kódu jenom tu část, která byla modifikována:
|
A výsled upraveného kódu je zde:
<% function kteryden(den) select case den case 1 tmp="Po" case 2 tmp="Út" case 3 tmp="St" case 4 tmp="Čt" case 5 tmp="Pá" case 6 tmp="So" case 7 tmp="Ne" end select kteryden=tmp end function function kalendar2(mesic,rok) font="“ pocetdni=PocetDniVMesici(mesic,rok) index=1 tmp=“
“ tmp=tmp&“„&mesic&“/“&rok&““ tmp=tmp&“ | ||
“ tmp=tmp&“
“ tmp=tmp&“ |
“ kalendar2=tmp end Function Response.Write (kalendar2(1,2000)) Response.Write(„
„) Response.Write (kalendar2(2,2000)) Response.Write(„
„) Response.Write (kalendar2(3,2000)) %>
Ano – správně namítáte, že v každém z měsíců je pokaždé v prvním sloupci jiný den. Přiznávám se, že to byl úmysl, aby jsem vám mohl demonstrovat, jak probíhá vývoj a vy jste snadno pochopili moje jednotlivé kroky při tvorbě této funkce.
To je pro dnešek vše. A co nás čeká příště? Doplníme funkci možnost volby, kterým dnem má začínat řádek tabulky. Dále přidám barevné odlišení sobot a nedělí a ještě vyznačení aktuálního dne a místo čísla měsíce bude možnost zobrazit měsíc slovy.
Na závěr bych chtěl připomenout, že funkce, které bude kalendář obsahovat závisí i na vás. Náměty prosím pište na můj e-mail nebo do diskuse pod tímto článkem.
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
-
Nepodceňte UX na vašem webu: Proč na něm záleží?
10. dubna 2024 -
Co je to VRAM a jak ji navýšit bez drahého upgradu?
20. srpna 2024 -
Výkonný a kompaktní: ASOME Max Studio s výjimečným poměrem cena/výkon
11. listopadu 2024
Nejnovější
-
Výkonný a kompaktní: ASOME Max Studio s výjimečným poměrem cena/výkon
11. listopadu 2024 -
Šokující data od Microsoftu: Kyberútoky rostou o stovky procent!
8. listopadu 2024 -
Chcete jedinečnou doménu? Objevte koncovky FOOD, MEME a MUSIC!
7. listopadu 2024 -
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024