Na četné žádosti čtenářů se téměř po roce od uveřejnění posledního dílů seriálu článku o tvorbě kalendáře pomocí ASP se k tomuto tématu vracím. V dnešním zdaleka ne posledním článku na toto téma vám ukáži jak již existující kalendář z předchozích dílů doplnit o informaci o tom kdo právě slaví svátek.

Jistě jste si již na některých www stránkách všimli skutečnosti, že občas je dost nekorektně zobrazen den ke kterému se neváže žádné jméno. Není nic neobvyklého se setkat s informací typu „Dnes má svátek: Svátek práce“. Určitě se vám tato konstrukce nelíbí a nebudete chtít mít na svých stránkách podobné nesmyslné informace.

Základem ošetření těchto hlášení je nutnost si takovýto den nějakým způsobem označit v databázi. Dobrým řešením se ukazuje umístění nějakého identifikátoru na začátek textu jenž není jménem. V databázi pak bude k 1.5. uvedeno „-Svátek práce“. Při vlastním zobrazování si pak pouze otestuji první znak řetězce na existenci znaku „-“ a podle toho zobrazím příslušný text „Dnes má svátek:“ anebo „Dnes je:“.

Pokud se vám nechce opisovat kalendář máte možnost si SQL skript který to udělá za vás stáhnout z ASP Network. Skript najdete zde. Tento skript vytvoří tabulku ve které bude uveden den, měsíc a k nim odpovídající textový údaj (jméno či jiný popis dne).

Ve skriptu jsou použity funkce isconnectdb a disconnect jenž jsou obsaženy souboru connect.asp, který zajišťuje spojení s databází a podrobně je popsán v článku ASP, databáze a objekt Connection.

A nyní už vlastní funkce která jako výsledek své činnosti vrátí text ve kterém je uvedeno kdo má právě dnes svátek případně jaký je významný den.

<%
function svatek()
   if isconnectdb() then
      datum=date()
      sql=“select jmeno from svatky where den=“&datepart(„D“,datum)&“ and mesic=“&datepart(„M“,datum)
      set rs=objconn.execute(sql)
      jmeno=trim(rs(„jmeno“))
      rs.close
      set rs=nothing
      disconnect()
      if left(jmeno,1)=“-“ then
         jmeno=right(jmeno,len(jmeno)-1)
         text=“Dnes je: „
      else
         text=“Dnes má svátek: „
      end if
      svatek=text&jmeno
   end if
end function
%>

Pomocí funkce left otestuji zda není v získaném jménu znak „-“ a pokud je tak ho pomocí funkce right odstraním. Dále podle výsledku testu připravím text, který bude uveden před jménem.

Dnes prezentovanou funkci můžete použít zcela samostatně neboť neobsahuje žádné formátovací znaky a nebo ji včlenit do funkce kalendář, jejíž poslední verze byla publikována v článku Jak vytvořit kalendář pomocí ASP? (III).

Pro samostatné použití stačí do místa kam chcete informaci umístit vložit tento kód

Response.write svatek

Pokud chcete mít umístěn svátek v již existujícím kalendáři je třeba do kalendáře umístit následující kód.

   tmp=tmp&“<tr><td colspan=3 align=center>“&font&svatek&“</a></td></tr>“

Protože celý kód kalendáře je příliš dlouhý uvedu zde pouze část, která se inkriminované změny přímo dotýká.

   ….
   ……
   ……..
   tmp=tmp&“</table>“
   tmp=tmp&“</td></tr>“
   tmp=tmp&“<tr><td colspan=3 align=center>“&font&“<a href=“&urldnes&“>“&ceskydatumcas(now,1,1)&“</a></td></tr>“
   tmp=tmp&“<tr><td colspan=3 align=center>“&font&svatek&“</a></td></tr>“
   tmp=tmp&“</table>“
   kalendar9=tmp
end Function

Jak sami vidíte jedná se o poslední řádek v tabulce kalendáře. Jako vždy si můžete stáhnout zdrojové kódy, které jsou k dispozici zde.

Pokud vás napadne další funkce kterou by měl kalendář umět napište svůj tip do diskuze pod článkem a nebo jej pošlete na můj email

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

Žádný příspěvek v diskuzi

Odpovědět