Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs

Spruch des Tages

Geschrieben von: Herbert Hahn
Kategorie: ASP Grundlagen

This printed page brought to you by AlphaSierraPapa

Die Idee zum heutigen Artikel entstammt aus dem echten (Beisl)Leben, nämlich dem k.u.k. Hofbeisl in Bad Ischl, das jeden Tag auf's neue einen Spruch des Tages auf einer Schautafel vor das Lokal stellt. Der Artikel "portiert" den Spruch des Tages in die Welt des Internets und ASP.

In unserer "Portierung" kommen die Sprüche aus einer Access Datenbank. Damit wir den tagesaktuellen Spruch in unsere Startseite (und andere Unterseiten) einbauen können, kapseln wir die Spruchabfrage in einer separaten ASP Datei. Deshalb beginnen wir bei der Datenbank und der Include-Datei.

Die Vorbereitung

Die Datenbank besteht lediglich aus einer Tabelle. Diese Tabelle tblSpruch beinhaltet alle unsere Sprüche, und erlaubt auch die Erweiterung in Richtung von Usern vorgeschlagenen Sprüchen:

Wenn wir die Datenbank fertig haben, wenden wir uns dem Script zum Auslesen der Sprüche zu (SpruchInclude.asp). Das Öffnen der Datenbank geschieht mit einer Funktion, die in der aktuellen Implementierung annimmt, daß die Datenbankdatei auch im gleichen Verzeichnis liegt wie das Script. Diese Annahme muß man je nach eigenem Webserversetup korrigieren.

<%
Sub OpenDB(ByRef con, d)
	DB = d & ".mdb"
	Dir = Request.ServerVariables("SCRIPT_NAME")
	Dir = StrReverse(Dir)
	Dir = Mid(Dir, InStr(1, Dir, "/"))
	Dir = StrReverse(Dir)
	Path = Server.MapPath(Dir) & "\"
	DSN = "DRIVER=Microsoft Access Driver (*.mdb);FIL=MS Access;DriverId=25" &_
        ";DefaultDir=" & Path & ";DBQ=" & Path & DB & ";"
	Set con = Server.CreateObject("ADODB.Connection")
	con.Open DSN
End Sub

In SpruchInclude.asp findet sich dann noch eine zweite Funktion, GetSpruch, die die eigentliche Arbeit des Auslesens des Spruchs übernimmt. Dieser Funktion übergibt man das Datum, für das man den Spruch ermitteln will, und bekommt dann den Text, den Autor, als auch das ausgelesene Datum zurück (dazu mehr später):

Sub GetSpruch(ByVal varDate, ByRef strSpruch, ByRef strAutor, ByRef dtDatum)
 varSqlDate = "#" & Month(varDate) & "/"  & Day(varDate) & "/"  & Year(varDate) & "#"

Da man mit VBScript Datumswerten bei SQL Statements immer Schiffbruch erleidet, konvertiere ich es zuallererst in einen SQL-verträglichen Datumsstring. Weiter geht es mit dem Öffnen der Datenbank:

 OpenDB con, "Sprueche_db"
 SQL = "SELECT TOP 1 * FROM tblSpruch Where fldSichtbar=True AND " & _
	" fldDatum <= " & varSqlDate & " ORDER BY fldDatum DESC"

Der SQL Befehl selektiert mir genau einen Spruch (TOP 1) der am oder vor dem angegebenen Datum aktuell war. Der Grund hierfür: erstens wollen wir keine Einträge aus der Zukunft sehen, zweitens könnte es vorkommen daß am gewünschten Tag kein Spruch eingegeben wurde, und deshalb nehmen wir einfach den nächst-älteren. Das SQL-Statement zeigt mir außerdem nur die Sprüche in der Datenbank, die auch als sichtbar markiert sind. (Vorausschauend haben wir dieses Flag in die Datenbank aufgenommen um auch von den Besuchern der Seite Sprüche entgegennehmen zu können. Diese können dann von einem Administrator freigegeben werden.)

 Set rs = con.Execute(SQL)

 If Not rs.EOF Then
   Spruch = rs.Fields("fldSpruch").Value
   Autor = rs.Fields("fldAutor").Value
   Datum = rs.Fields("fldDatum").Value
 End If

 rs.Close
 con.Close
 Set rs = Nothing
 Set con = Nothing
End Sub

Das SQL Statement wird ausgeführt, und die Resultate der einzigen Datenzeile ausgelesen. Danach geht es nur noch ans Aufräumen, und schon ist die Funktion abgearbeitet.

Der Einsatz

Damit wir den Spruch nun in einer Seite (zB auf der Startseite) verwenden können, ist nur das Einbinden der gerade erstellten Include-Datei notwendig (SpruchDesTages.asp):

<!--#include file="SpruchInclude.asp"-->
<%
Dim varToday, Spruch, Autor, Datum

' Je nach Server musz man das Datum korrigieren (zB +6 Stunden)
varToday = Date()
GetSpruch varToday, Spruch, Autor, Datum
%>

Das aktuelle Datum wird ermittelt, und damit dann die GetSpruch Funktion aufgerufen. Alles was noch zu tun bleibt ist den Spruch auf der Seite darzustellen:

<html>
<head>
<title>Spruch des Tages</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#ffffff" text="#000000">
<table width="75%" border="0" align="center" cellspacing="0" cellpadding="0">
  
  <TR>
    <TD width=150></TD>
    <TD></TD>
    <TD width=150></TD></TR>
  <tr>
    <td width="150">&nbsp;</TD>
    <td>
      <div align="center">
        <IMG align=middle height=44 src="softwing.gif" width=135>
      </DIV></TD>
    <td width="150">&nbsp;</TD></TR>
  <TR>
    <TD width=150></TD>
    <TD></TD>
    <TD width=150></TD></TR>
  <tr> 
    <td width="150">&nbsp;</TD>
    <td> 
      <div align="center"><b><font face="Arial" size="4">Der Spruch 
      des Tages</FONT></B></DIV></TD>
    <td width="150">&nbsp;</TD></TR>
  <tr> 
    <td width="150">&nbsp;</TD>
    <td> 
      <div align="center"><font face="Arial" size="3">
      <% = Spruch %>
      </FONT></DIV></TD>
    <td width="150">&nbsp;</TD></TR>
  <tr> 
    <td width="150">&nbsp;</TD>
    <td><font size="2" face="Arial">Autor:
      <% = Autor % >  
      <br>
      Datum:
      <% = Datum %>
       </FONT></TD>
    <td width="150">&nbsp;</TD></TR></TABLE>
</body>
</html>

Damit haben wir den Spruch des Tages in unserer Seite eingebaut.

Schlußbemerkung

Natürlich gibt es für das Einbauen in eine Seite elegantere Varianten, jedoch ging es mir hier um die Spruchdatenbank selbst. Verwendet habe ich dieses Script im Projekt http://www.kukhofbeisl.at (Es ist mein Stammbeisl und mitunter kommt hier auch Christoph Wille als Gast vor).

Wer jetzt sagt "ist ja ganz nett aber wo bekomme ich die vielen Sprüche her", dem kann geholfen werden. Mit dieser Url kann man eine kleine Spruchseite in die eigene Site einbauen, die von der k.u.k. Crew täglich gewartet wird. Die Qualität der Sprüche ist hier im ganzen Salzkammergut bekannt.

This printed page brought to you by AlphaSierraPapa

Download des Codes

Klicken Sie hier, um den Download zu starten.
http://www.aspheute.com/code/20020301.zip

 

©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.