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

Liste

.NET 2.0 (1)
.NET Allgemein (16)
.NET Fu (5)
ADO.NET (11)
Aprilscherz (3)
ASP Grundlagen (44)
ASP Tricks (83)
ASP.NET (44)
ASPIntranet.de (5)
C# (28)
Datenbank (44)
Dokumentation (4)
IIS 6.0 (1)
Komponenten (29)
Optimierung (10)
Server (21)
Sicherheit (34)
Tee Off (6)
VB.NET (6)
WAP (8)
Web Services (11)
XML (9)

RSS 2.0 - Die neuesten fünf Artikel auf AspHeute.com


 

Suchen





 

English Articles
Chinese Articles
Unsere Autoren
 
Link zu AspHeute
Impressum
Werben
Anfragen

Eine Umfrage in ASP erstellen

Geschrieben von: Alexander Zeitler
Kategorie: ASP Tricks

Umfragen sind ein einfaches aber hilfreiches Tool, wenn es darum geht, etwas über die Wünsche und Verhaltensweisen von Besuchern auf einer Webseite zu erfahren. Die möglichen Einsatzgebiete sind vielfältig. Wir wollen uns heute mit der Programmierung einer Umfrage beschäftigen, die uns die fünf am häufigsten besuchten Webseiten liefert.

Außerdem erstellen wir uns eine Administrationsseite, auf der wir mühelos alle Parameter und Einträge steuern können.

Zielsetzung und Datenbank-Design

Betrachten wir zunächst ein mögliches Ergebnis, wie unsere Umfrage zu Beginn aussehen könnte:

Der Aufbau der Umfrage ist relativ einfach gestaltet. Außer einer frei definierbaren Frage werden die in der Datenbank befindlichen Webseiten sowie der Betreiber gelistet. Weiterhin sieht man ein Diagramm, das die bisherige Stimmenvergabe prozentual darstellt, gefolgt von der absoluten Stimmenzahl je Webseite und deren Prozentsatz. Was natürlich auch nicht fehlen darf ist das Radio-Feld, das uns die Stimmabgabe überhaupt erst ermöglicht.

Unterhalb dieser Werte ist die Anzahl der bisher insgesamt abgegeben Stimmen (optional) sowie das End-Datum der Umfrage angegeben.

Die oben gewählte Darstellungsweise ist zwar sehr auskunftsfreudig, hat allerdings zwei Nachteile. Zum einen wird für diese Darstellung relativ viel Platz benötigt, zum anderen ist es für die Besucher wegen der dargestellten Zwischenergebnisse möglich, das Endergebnis zu beeinflussen. Deshalb sollte es also möglich sein, die Umfrage den individuellen Sicherheits- und Platzanforderungen anzupassen - und dies in allen drei Phasen (Umfrage vor der Wahl, Benutzer hat gewählt, Ende der Umfrage) der Umfrage.

In der obigen Grafik nicht zu sehen, aber dennoch variabel konfigurierbar soll auch die Anzahl der dargestellten Webseiten sein, die ab dem Ende der Umfrage angezeigt werden. In unserem Fall wären das also 5.

Aus unseren soeben gewonnenen Anforderungen ergibt sich somit, daß wir zwei Tabellen in der Datenbank benötigen: vote und vote_parameter. Beide Tabellen sind in der MS Access Datenbank vote.mdb gespeichert, die auch dem heutigen Download beiliegt.

Die Struktur der Tabelle vote

Die Struktur der Tabelle vote_parameter

Umsetzung

Kommen wir nun zur Umsetzung unserer Vorstellungen. Zunächst müssen wir überprüfen, ob sich in der Tabelle vote_parameter überhaupt Werte befinden. Ist diese Tabelle leer, würden wir die Umfrage anstelle einer Frage mit einer für den Benutzer undefinierbaren Fehlermeldung beginnen. Wir benötigen diese Prüfung - wie fast den gesamten Code - für jeweils alle drei Zustände der Umfrage, die ich hier noch einmal genau definieren möchte:

  • "standard": die Umfrage ist aktiv und der Benutzer hat noch nicht gewählt
  • "gewaehlt": die Umfrage ist aktiv und der Benutzer hat bereits gewählt
  • "ende": die Umfrage hat das Enddatum erreicht

Aus dieser Tatsache heraus ergibt es sich, daß wir sinnvoller Weise einen Großteil des Codes in Prozeduren und Funktionen auslagern und diese dann mit dem jeweiligen Zustand (Status) aufrufen.

Parameterprüfung

Wenden wir uns nun der Überprüfung, ob überhaupt Parameter vorhanden sind, zu. Um das Ergebnis der Überprüfung abfragen zu können, erstellen wir diese als Funktion mit dem Namen Check_Parameter:

Function Check_Parameter
    strSQL = "SELECT * FROM Vote_Parameter"
    Set rs = Conn.Execute(strSQL)
    If rs.Eof Then 
        Check_Parameter = False
    Else
        Check_Parameter = True
    End If
    rs.Close
    Set rs = Nothing
End Function

Die Funktionsweise ist schnell erklärt. Wir erstellen ein RecordSet und überprüfen, ob dieses leer ist - ist dies der Fall, liefert die Funktion das Ergebnis False zurück, sonst logischerweise True. Aufgerufen wird diese Funktion mit einer If-Abfrage, worauf wir aber später noch gezielt eingehen werden.

Feststellen, ob die Umfrage beendet ist

Es folgt nun eine weitere Überprüfung der Parameter: ist die Umfrage beendet? Hierzu verwenden wir wiederum eine Funktion: Check_Ende, welche zu gegebener Zeit auch durch eine If-Abfrage aktiviert wird.

Function Check_Ende
    strSQL = "SELECT Ende FROM Vote_Parameter"
    Set rs = Conn.Execute(strSQL)
    If rs.Fields("Ende").Value <= ServerNow() Then
        Check_Ende = True
    Else
        Check_Ende = False
    End If
    rs.Close
    Set rs = Nothing
End Function

Nach einer Prüfung des Enddatums in der Tabelle vote_parameter gegen das Datum aus der Funktion ServerNow werden der Funktion entsprechend die Werte True (Umfrage ist beendet) oder False (Umfrage läuft noch) zugewiesen.

Die Funktion ServerNow dient dazu, um eventuell vorhandene Zeitunterschiede bei amerikanischen (oder allg. ausländischen) Servern auszugleichen. Hierzu ist anstelle der 0 der entsprechende Zeitunterschied in Stunden einzutragen.

Function ServerNow()
    ServerNow = DateAdd("h", 0, Now())
End Function

Darstellen der Kopfzeile

Kommen wir jetzt zur Darstellung der Kopfzeile. Auch diese variiert in Abhängigkeit vom Status, weswegen wir sie als Prozedur Zeige_Header implementieren. Beim Aufruf dieser Prozedur wird der aktuelle Status übergeben, welcher sich in der Variable strStatus befindet.

Sub Zeige_Header(strStatus)
    rsHeader = strStatus & "_Header"	
    strSQL = "SELECT "
    strSQL = strSQL & rsHeader
    strSQL = strSQL & " FROM Vote_Parameter"
    Set rs = Conn.Execute(strSQL)
    Response.Write "<td>"
    Response.Write rs(0)
    Response.Write "</td>" & vbCrLf
    rs.close
    Set rs = Nothing
End Sub

In das Recordset greife ich mit dem Index des Feldes, das ich auslesen will. Da nur eine Spalte durch die SELECT Abfrage retourniert wird, ist das der Index 0. Der Vorteil ist, daß Zugriffe mittels Index schneller sind als mit Name.

Darstellen der Einträge

Die in strStatus befindlichen Werte bzw. Strings sind bei näherer Betrachtung identisch mit den Präfixen (standard etc.) der Parameter in der Tabelle Vote_Parameter - der Grund hierfür wird gleich ersichtlich, wenn wir uns die Prozedur Erzeuge_Eintraege ansehen:

Sub Erzeuge_Eintraege (strStatus)
	rsDiagramm = strStatus & "_Diagramm"
	rsAnzahl = strStatus & "_Anzahl"
	rsProzent = strStatus & "_Prozent"
	rsVote = strStatus & "_Vote"
	strSQL = "SELECT " & rsDiagramm & "," & rsAnzahl & "," & rsProzent & "," 
    strSQL = strSQL & rsVote & " FROM Vote_Parameter"
	Set rs = Conn.Execute(strSQL)
	brsDiagramm = rs(0)
	brsAnzahl = rs(1)
	brsProzent = rs(2)
	brsVote = rs(3)
	rs.Close
	Set rs = Nothing
	Zeige_Eintraege brsDiagramm, brsAnzahl, brsProzent, brsVote, strStatus
End Sub

Der an die Prozedur übergebene String strStatus wird vor der Erzeugung eines Recordsets mit den jeweiligen Suffixen ("_Diagramm" etc.) der Spaltennamen verknüpft. Hieraus wird der den SQL-String erzeugt und ausgeführt. Die Ergebnisse dieser Abfrage werden dann lokalen Variablen zugeordnet, sodaß wir das Recordset bereits vor Aufruf der Prozedur Zeige_Eintraege schließen können. Danach wird die Prozedur Zeige_Eintraege mit den jetzt lokalen True- und False-Werten (aus der Tabelle Vote_Parameter) und dem aktuellen Status (strStatus) aufgerufen:

Sub Zeige_Eintraege(bDiagramm, bAnzahl, bProzent, bVote,strStatus)
    Response.Write "<table border=""0"" width=""100%"" cellpadding=""0"" cellspacing=""0"">" & vbCrLf
    Response.Write "<form action=""vote.asp"" method=""post"">" & vbCrLf
    Response.Write "<tr>" & vbCrLf
    Response.Write "<td bgcolor=""#808080"">Homepage</td>" & vbCrLf
    Response.Write "<td bgcolor=""#808080"">&nbsp;Betreiber</td>" & vbCrLf
    If bDiagramm=True Then
        Response.Write "<td bgcolor=""#808080"">&nbsp;Diagramm</td>" & vbCrLf
    End If
    If bAnzahl = True Then
        Response.Write "<td bgcolor=""#808080"">&nbsp;Anzahl</td>" & vbCrLf
    End If

    If bProzent=True Then
        Response.Write "<td bgcolor=""#808080"">&nbsp;Prozent</td>" & vbCrLf
    End If
    If bVote=True Then
        Response.Write "<td bgcolor=""#808080"">&nbsp;Ihre Stimme</td>" & vbCrLf
    End If
    If strStatus <> "ende" Then
        strSQL = "SELECT * FROM Vote ORDER BY Homepage"
    Else
        strSQLEnde = "SELECT * FROM Vote_Parameter"
        Set rsende = Conn.Execute(strSQLEnde)
        strSQL = "SELECT TOP "
        strSQL = strSQL & rsende("Ende_Eintraege")
        strSQL = strSQL & " * FROM Vote ORDER BY Anzahl DESC"
    End If
    Set rs = Conn.Execute(strSQL)
    Do While Not rs.Eof
        Response.Write "<tr>" & vbCrLf
        Response.Write "<td>" & rs("Homepage") & "</td>" & vbCrLf
        Response.Write "<td>&nbsp;" & rs("Betreiber") & "</td>" & vbCrLf
        If bDiagramm=True Then
            Response.Write "<td>&nbsp;"
            intProzente=Zeige_Prozent(rs("Anzahl"))
            Zeige_Diagramm(intProzente)
            Response.Write "</td>" & vbCrLf
        End If
        If bAnzahl=True Then
            Response.Write "<td align=""right"">&nbsp;" & rs("Anzahl") & "</td>" & vbCrLf
        End If
        If bProzent=True Then
            Response.Write "<td align=""right"">&nbsp;" & Zeige_Prozent(rs("Anzahl")) 
            Response.Write "%</td>" & vbCrLf
        End If
        If bVote=True Then
            Response.Write "<td align=""center"">"
            Response.Write "<input type=""radio"" name=""id"" value=""" & rs("Id") 
            Response.Write """></td>" & vbCrLf
        End If
        Response.Write "</tr>" & vbCrLf
        rs.MoveNext
    Loop
    Response.Write "</table>" & vbCrLf
    rs.Close
    Set rs = Nothing
End Sub

Zunächst wird die Kopfzeile der Tabelle generiert. Für die Felder Homepage und Betreiber gibt es keine Einschränkungen, sehr wohl aber für die restlichen Felder. Hier kommen die übergebenen Booleschen Werte bDiagramm, bAnzahl, bProzent, bVote zum tragen. Durch Auswertungen mit If-Abfragen wird festgelegt, ob die Spalten angezeigt werden sollen oder nicht.

Direkt im Anschluß wird der String strStatus ausgewertet - enthält dieser nicht den Eintrag ende, so wird der SQL-String zur Anzeige aller Einträge sortiert nach der Homepage generiert. Ist der Eintrag jedoch ende, so wird zunächst aus der Tabelle Vote_Parameter die Anzahl der anzuzeigenden Datensätze (Ende_Eintraege) ermittelt. Danach wird eine TOP-Abfrage mit eben dieser Anzahl erstellt. In der Folge werden alle der Abfrage entsprechenden Datensätze angezeigt und natürlich werden auch hier nochmals die Booleschen Werte ausgewertet, um die anzuzeigenden Spalten festzulegen.

Bei den Abfragen für die Spalten Diagramm und Prozent werden wiederum Prozeduren bzw. Funktionen mit Parametern aufgerufen, die die entsprechenden Arbeiten erledigen.

Betrachten wir zuerst die Funktion Zeige_Prozent, da diese auch die Grundlage für die Prozedur Zeige_Diagramm bildet:

Function Zeige_Prozent(intAnzahl)
	strSQL = "SELECT Sum(Anzahl) AS SumOfAnzahl FROM vote"
	Set rs = Conn.Execute(strSQL)
	intGesamt = rs("SumOfAnzahl")
	intProzent = Round(intAnzahl/intGesamt*100,1)
	Zeige_Prozent = intProzent
	rs.close
	Set rs = Nothing
End Function

Zunächst wird die Anzahl aller bisher abgegebenen Stimmen ermittelt. Diese wird dann mit der übergebenen Stimmenzahl (intAnzahl) zu einem Prozentsatz verrechnet, der als Ergebnis der Funktion zurückgegeben wird.

Wie bereits erwähnt, wird aus den nun ermittelten Prozentsätzen das Diagramm mit Hilfe der Funktion Zeige_Diagramm erzeugt:

Sub Zeige_Diagramm(intProzente)
    Balken = Prozentsatz Pixel breit
    sBalkenBreite = intProzente
    wBalkenBreite = (100 - sBalkenBreite)
    Response.Write "<img src=""diagramm_s.gif"" width=""" & sBalkenBreite 
            & """ height=""6"" border=""0"" alt=""" & Round(intProzente,1) & "%"">"
    Response.Write "<img src=""diagramm_w.gif"" width=""" & wBalkenBreite 
            & """ height=""6"" border=""0"" alt=""" & Round(intProzente,1) & "%"">"
End Sub

In einer Schleife von 1 bis 100 (für 100%) wird überprüft, ob der übergebene Prozentsatz (intProzente) kleiner oder gleich dem aktuellen Zählerwert ist. Ist dies der Fall, so wird ein schwarzer Strich dargestellt. Alle Werte über dem Prozentsatz ergeben einen weißen Strich, was im Gesamtergebnis zu unserem Balkendiagramm führt.

Darstellung der Fußzeile

Was uns jetzt noch fehlt, ist die zum Status passende Fußzeile. Auch das überlassen wir einer Prozedur, der wir den Status übergeben:

Sub Zeige_Footer (strStatus)
    strSQL = "SELECT * FROM Vote_Parameter"
    Set rs = Conn.Execute(strSQL)
    Record_Gesamt = strStatus & "_Gesamt"
    If rs(Record_Gesamt) = True Then
        strSQL1 = "SELECT Sum(Anzahl) AS SumOfAnzahl FROM vote"
        Set rs1 = Conn.Execute(strSQL1)
        intGesamt = rs1("SumOfAnzahl")

        rs1.Close
        Set rs1 = Nothing
        If strStatus <> "ende" Then
            Response.Write "Bisher abgegebene Stimmen: " & intGesamt & "<br>"	
            Response.Write "Die Umfrage endet am " & rs("ende")
        Else
            Response.Write "Insgesamt abgegebene Stimmen: " & intGesamt
        End If
    Else
        Response.Write "Die Umfrage endet am " & rs("Ende")
    End If
    rs.Close
    Set rs = Nothing
End Sub

Nachdem wir aus dem String strStatus und dem Suffix _Gesamt die korrekte Bezeichnung des Recordsets erhalten haben, prüfen wir diesen, ob die Gesamtzahl aller Stimmen angezeigt werden soll oder nicht. Ist die Prüfung positiv, so ermitteln wir wie schon bei den Prozentsätzen die Gesamtzahl der abgegebenen Stimmen aus der Tabelle vote. Danach wird geprüft, ob die Umfrage beendet ist. Ist dies der Fall, so wird der Text "Insgesamt abgegebene Stimmen" ausgegeben, sonst erhalten wir "Bisher abegebene Stimmen" und den Hinweis auf das Enddatum der Umfrage. War die erste Prüfung negativ, so lassen wir nur das Enddatum der Umfrage ausgeben.

Starten der Umfrage

Was uns jetzt noch fehlt, ist der Programmteil, der die ganzen Funktionen und Prozeduren aufruft (default.asp):

<!--#include file="strconn.asp"-->
<%
If Check_Parameter = False Then
    Response.Write "<tr>" & vbCrLf
    Response.Write "<td>"
    Response.Write "Keine Parameter vorhanden - überprüfen Sie Ihre Datenbank"
    Response.Write "</td>" & vbCrLf
    Response.Write "</tr>" & vbCrLf
Else
    If Check_Ende = True Then Session("status") = "ende"
    strStatus = Session("status")
    If strStatus = "" Then strStatus="standard"
    Response.Write "<tr>"
    Zeige_Header strStatus
    Response.Write "</tr>" & vbCrLf
    Response.Write "<tr>" & vbCrLf
    Response.Write "<td>"
    Erzeuge_Eintraege strStatus
    Response.Write "</td>" & vbCrLf
    Response.Write "</tr>" & vbCrLf
    Response.Write "<tr>" & vbCrLf
    Response.Write "<td align=""right"">"
    If strStatus = "standard" Then
        Response.Write "<input type=""submit"" value=""wählen!"">"
    Else
        Response.Write "&nbsp;"
    End If
    Response.Write "</td>" & vbCrLf
    Response.Write "</form></tr>" & vbCrLf
    Response.Write "<tr>" & vbCrLf
    Response.Write "<td>"
    Zeige_Footer strStatus
    Response.Write "</td>" & vbCrLf
    Response.Write "</tr>" & vbCrLf
End If
Conn.Close
Set Conn = Nothing
%>

Das Caching wird für diese - wie auch alle anderen Dateien - deaktiviert, um immer aktuelle Werte zu erhalten:

Response.Expires=0
Response.AddHeader "Pragma","no-cache"
Response.AddHeader "cache-control", "no-store"

Die Verbindung zur Datenbank benötigen wir in mehreren Dateien, weswegen sie in eigene Datei (strconn.asp) ausgelagert wird. Das hat den Vorteil, daß eventuelle Änderungen nur einmal für alle ASP-Dateien ausgeführt werden muß. Der Inhalt der Datei strconn.asp:

Set Conn = Server.CreateObject("ADODB.Connection")
strConn = "Driver={Microsoft Access Driver (*.mdb)};DriverID=25;DBQ="
strConn = strConn & Server.MapPath("vote.mdb")
strConn = strConn & ";FIL=MS Access;MaxBufferSize=512;PageTimeout=5;"
Conn.Open strConn

Kommen wir zurück zur Anzeige unserer Umfrage.

Zunächst prüfen wir durch den Aufruf der Funktion Check_Parameter, ob Parameter für die Umfrage in der Datenbank vorhanden sind - ist dies nicht der Fall, brechen wir die Ausgabe mit einer Fehlermeldung ab. Andernfalls fahren wir mit der Prüfung Check_Ende fort und erzeugen entsprechend dem Ergebnis die Sessionvariable status. Deren Inhalt wird dann zum korrekten Status strStatus weiterverarbeitet. Mit eben diesem lassen wir dann die Einträge der Umfrage anzeigen (Erzeuge_Eintraege). Außerdem stellen wir anhand des Status' fest, ob der "wählen"-Button angezeigt werden darf oder nicht. Zu guter letzt lassen wir noch die Fußzeile generieren.

Somit sind wir mit dem Anzeigen der Umfrage fertig und können uns dem zuwenden, was nach einem Klick auf die Radio-Felder und den "wählen"-Button passiert: dem Schreiben der Einträge...

Schreiben der Einträge in die Datenbank

Die vom Benutzer getroffene Auswahl wird an die Seite vote.asp übergeben. Die Auswertung dieser Auswahl geschieht im folgenden:

<%
Response.Expires=0
Response.AddHeader "Pragma","no-cache"
Response.AddHeader "cache-control", "no-store"
Response.Buffer = True

Id = Request.Form("id")
If id = "" Then 
	Response.Redirect("default.asp")
	Response.End
End If
Session("status")="gewaehlt"

%>
<!-- Datenbank-Verbindung herstellen -->
<!--#include file="strconn.asp"-->
<%
SQL = "UPDATE vote SET anzahl = anzahl + 1 WHERE id = " & id & ""
Conn.Execute(SQL)

Response.Redirect("default.asp")

Zunächst wird geprüft, ob überhaupt eine Webseite angeklickt wurde. Falls nicht (Id ist leer) wird der Benutzer umgehend auf die Umfrage-Seite zurückgeleitet. Enthält "Id" jedoch einen Wert, so wird nach dem Abschalten des Cachings die Verbindung zur Datenbank hergestellt und anschließend der Wert in der Spalte "Anzahl" der Tabelle Vote_Parameter um den Wert 1 erhöht. Außerdem wird die Sessionvariable status auf den Inhalt "gewaehlt" gestellt, was nach der Umleitung auf die Datei default.asp zu den entsprechenden Aktionen führt.

Somit ist auch dieser Teil der Umfrage erklärt und die Umfrage bereits voll einsatzfähig. Allerdings ist es sehr mühselig und auch fehlerträchtig, die Parameter und Einträge in der Datenbank händisch zu erstellen. Was liegt also näher, als eine Administrationsoberfläche zu programmieren, die diese Arbeiten erheblich erleicht?

Administration der Umfrage

Da wir bereits im zweiten Teil des Artikels Erstellung eines Newstickers in ASP eine komfortable Administrationssseite erstellt haben, greifen wir auf diese zurück und modifizieren sie entsprechend unseren neuen Anforderungen. Hier zunächst der obere Abschnitt der Administration mit den Einträgen:

Im Vergleich zu der bestehenden Administration wurde der Anzeigeteil leicht modifiziert, so daß nur noch die Datenfelder "Homepage" und "Betreiber" angezeigt werden. Der Code hierzu befindet sich in den Zeilen 116 - 144 der Datei admin.asp. Die genaue Beschreibung zur Technik finden Sie in dem besagten Artikel. Der Test, ob ein Eintrag in der Liste gewählt wurde - mittels JavaScript - bleibt bestehen.

Darstellung der Umfrage-Parameter

Zunächst wieder das Ergebnis der Anzeige:

Die Administration der Umfrage-Parameter weicht (zumindest optisch) erheblich von der Administration der Newsticker-Parameter ab. So wird jetzt eine Funktion zum Einstellen des Enddatums verwendet. Diese ist uns allerdings bereits bekannt - sie befand sich bisher in der Datei logik.asp in den Zeilen 353 - 395 - einzig der Code zur Anzeige der Stunden und Minuten wurde entfernt. Eine Überprüfung des Datums durch ein JavaScript ist nicht notwendig, da die Verwendung der Dropdown-Felder immer ein Datum produziert.

Die Anzahl der am Ende angezeigten Einträge ist technisch zu behandeln wie die Parameter des Newstickers. Auch die Überprüfung mittels JavaScript gestaltet sich identisch.

Absolut neu hingegen sind die Checkboxen. Diese sind jedoch leicht aus der Datenbank mittels If-Abfragen zu generieren. Ein Beispiel, welches für alle anderen Checkboxen in allen Zuständen gilt, finden Sie in Zeile 229 der Datei admin.asp. Ist der Boolesche Wert in der Datenbank True, wird die Checkbox mit dem Schlüsselwort CHECKED versehen. Falls nicht, bleibt die Checkbox unmarkiert. Eine JavaScript-Prüfung entfällt, da die Entscheidungsfreiheit über markiert oder nicht markiert bei Ihnen liegt.

Ebenfalls neu sind die mehrzeiligen Eingabefelder (Textareas) zur Eingabe der Kopfzeilen. Doch auch deren Umsetzung bereitet uns keine Kopfschmerzen. Wie einfach sich die technische Umsetzung gestaltet, sehen Sie zum Beispiel in der Zeile 250. Auch die JavaScript-Prüfung in den Zeilen 62 - 65 ist kein Hexenwerk mehr.

Somit ist die Anzeige der Einträge sowie Parameter der Umfrage in der Administration bereits abgeschlossen und wir können uns dem Erstellen, Ändern und Löschen der Einträge sowie der Parameter-Änderung widmen.

Anlegen, ändern und Löschen von Einträgen

Das Formular für die Erfassung neuer Homepages für die Umfrage ist auf zwei Felder geschrumpft:

Entsprechend einfach ist der Code geworden, der zur Speicherung der neuen Einträge notwendig ist (Zeilen 99 - 182 in logik.asp) und bei fehlerfreier Eingabe zu folgendem Ergebnis führt:

Ebenso wurden die Befehle für das Ändern und Löschen von Einträgen angepasst. Sie befinden sich in den Zeilen 183 - 324 (ändern und Änderungen speichern) und in den Zeilen 326 - 346 (Löschen von Einträgen).

Ändern der Parameter

Der Code (Zeilen 369 - 769) für das Speichern der geänderten Parameter wurde durch die größere Anzahl an Formularfelder etwas umfangreicher - keinesfalls aber schwieriger. Nach dem Einlesen aller Parameter in den Zeilen 6 - 28, werden in den Zeilen 374 - 388 die Checkboxen ausgewertet. Danach werden sämtliche Parameter in der Datenbank upgedatet. Der übrige Code ist nur noch für die Ausgabe der Bestätigung, daß die Daten korrekt gespeichert wurden, zuständig.

Schlußbemerkung

Somit sind wir am Ende des Artikels angekommen. Natürlich ist die hier vorgestellte Umfrage beliebig erweiterbar. So könnten Sie daraus zum Beispiel leicht ein Bewertungssystem für Ihre Homepage programmieren. Eine weitere Möglichkeit wäre auch, daß Sie die Umfrage dahingehend erweitern, daß nur eine Wahl je Benutzer getroffen werden kann, sei es durch eine Benutzerverwaltung oder den Einsatz von Cookies.

Download des Codes

Klicken Sie hier, um den Download zu starten.

Verwandte Artikel

Caching bei Browser und Proxy - Woher Seiten wirklich kommen
Erstellung eines Newstickers in ASP
Erstellung eines Newstickers in ASP - Teil 2

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.

Bewerten Sie diesen Artikel
 Sehr gut   Nicht genügend  
   1  2  3  4  5  
 

  
   Für Ausdruck optimierte Seite

©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.