Spruch des Tages
Geschrieben von: Herbert Hahn 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 VorbereitungDie 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 EinsatzDamit 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"> </TD> <td> <div align="center"> <IMG align=middle height=44 src="softwing.gif" width=135> </DIV></TD> <td width="150"> </TD></TR> <TR> <TD width=150></TD> <TD></TD> <TD width=150></TD></TR> <tr> <td width="150"> </TD> <td> <div align="center"><b><font face="Arial" size="4">Der Spruch des Tages</FONT></B></DIV></TD> <td width="150"> </TD></TR> <tr> <td width="150"> </TD> <td> <div align="center"><font face="Arial" size="3"> <% = Spruch %> </FONT></DIV></TD> <td width="150"> </TD></TR> <tr> <td width="150"> </TD> <td><font size="2" face="Arial">Autor: <% = Autor % > <br> Datum: <% = Datum %> </FONT></TD> <td width="150"> </TD></TR></TABLE> </body> </html> Damit haben wir den Spruch des Tages in unserer Seite eingebaut. SchlußbemerkungNatü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. Download des CodesKlicken Sie hier, um den Download zu starten. Wenn Sie jetzt Fragen haben...Wenn Sie Fragen rund um die in diesem Artikel vorgestellte Technologie haben, dann schauen Sie einfach bei uns in den Community Foren der deutschen .NET Community vorbei. Die Teilnehmer helfen Ihnen gerne, wenn Sie sich zur im Artikel vorgestellten Technologie weiterbilden möchten. Haben Sie Fragen die sich direkt auf den Inhalt des Artikels beziehen, dann schreiben Sie dem Autor! Unsere Autoren freuen sich über Feedback zu ihren Artikeln. Ein einfacher Klick auf die Autor kontaktieren Schaltfläche (weiter unten) und schon haben Sie ein für diesen Artikel personalisiertes Anfrageformular.
Und zu guter Letzt möchten wir Sie bitten, den Artikel zu bewerten. Damit helfen Sie uns, die Qualität der Artikel zu verbessern - und anderen Lesern bei der Auswahl der Artikel, die sie lesen sollten.
©2000-2006 AspHeute.com |