» Start & Installation » ASP-Grundlagen » VBScript » Datenbanken » Erweiterte Techniken » Fehlercode-Suche » FAQ » Forum für aspfehlercodes » ASP » JavaScript » ASCII & ANSI » HTTP-Statuscodes » Codepage » LCID » VBScript » JScript
|
Link: Wichtiger Hinweis in eigener Sache!
| Autor: Klaus Keller | Erstellt am: 2005-10-31 | Aufrufe: 5611 |
Tipp 87: Voting - Eine Seite oder ein Beitrag bewerten
Voting, englischer Begriff für Abstimmung/Bewertung, wird auf vielen Seiten eingesetzt um die Qualität von Beiträgen und Seiten bewerten zu lassen um darauf mit einer Qualitätsverbesserung oder Ausweitung im Themengebiet reagieren zu können.
Das Voting klingt zunächst nach einer einfachen Aufgabe, sobald jedoch viele Seiten im Einsatz kommen ist das ganze nicht mehr ganz so einfach. Wie soll man auf jeder Seite das bewerkstelligen? Wie läuft es, wenn man eine neue Seite hinzufügt, muß diese dann auch bei den Votings eingetragen werden? Das klingt nach Aufwand! Allerdings sollte eine Seite nicht allzuviel Aufwand bedeuten. Wie aber sonst das Problem der Identifikation lösen? Wie soll ein Voting eindeutig zu einer Seite zugeordnet werden?
Die Lösung des Einfachen lautet dabei den Dateinamen inklusive Pfad als Identifikator einzusetzen. Dieser Pfad inklusive Dateinamen wird mit den Servervariablen automatisch ermittelt. Das Formular, um eine Bewertung abzugeben, sieht so aus:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| public function ShowVotingForm() '================================================================================== 'Name und Version 'ShowVotingForm <-> Version 0.1, letzte Änderung am 2005-07-31 '---------------------------------------------------------------------------------- 'Beschreibung: 'Zeigt das Formular für die Bewertung einer Seite/eines Beitrags an. '==================================================================================== %> <form action="voting.asp" method="post" id=form1 name=form1> <input type="radio" id="Voting_Number" name="Voting_Number" value="1" /> 1 <input type="radio" id="Voting_Number" name="Voting_Number" value="2" /> 2 <input type="radio" id="Voting_Number" name="Voting_Number" value="3" /> 3 <input type="radio" id="Voting_Number" name="Voting_Number" value="4" /> 4 <input type="radio" id="Voting_Number" name="Voting_Number" value="5" /> 5 <br> <input type="submit" id="submitVoting" name="submitVoting" value="abstimmen" /> <input type="hidden" name="Site_Name" id="Site_Name" value="<% = Request.ServerVariables("PATH_INFO") %>" /> </form> <% end function |
Der Quelltext, in welcher der Seitenname übergeben wird ist in Zeile 17 und 18. Es wird dazu ein verstecktes HTML-Feld "Hidden" eingesetzt, diesem wird dieser Wert zugewiesen:
| <% = Request.ServerVariables("PATH_INFO") %> |
Natürlich muss noch dargestellt werden, wie oft bewertet wurde, und welche Bewertungen abgegeben wurde, das sieht so aus:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| public function ShowVotingResult() '================================================================================== 'Name und Version 'ShowVotingResult <-> Version 0.11, letzte Änderung am 2005-19-31 '---------------------------------------------------------------------------------- 'Beschreibung: 'Zeigt das Ergebnis der bisherigen Bewertungen einer Seite/eines Beitrags an. '================================================================================== dim rs, strSQL, strConn, SiteName, VotingCount, VotingSum, VotingAverage SiteName = Request.ServerVariables("PATH_INFO") strConn = GetStrConn("Voting") strSQL = "SELECT " & _ "tblVoting.VotingID, " & _ "tblVoting.Voting_Number, " & _ "tblVoting.Voting_Date, " & _ "tblVoting.SiteID, " & _ "tblVoting.Voting_IP, " & _ "tblSite.Site_Name " & _ "FROM tblSite " & _ "INNER JOIN tblVoting ON tblSite.SiteID = tblVoting.SiteID " & _ "WHERE tblSite.Site_Name LIKE '" & SQLEncode(SiteName) & "'" set rs = Server.CreateObject("ADODB.Recordset") rs.open strSQL, strConn, 3, 3 if rs.EOF then Response.Write("Bisher keine Abstimmung") else if rs.RecordCount > 1 then Response.Write("Anzahl der Bewertungen: " & rs.RecordCount) do while not rs.EOF VotingSum = VotingSum + rs.Fields("Voting_Number").Value rs.MoveNext Loop Response.Write(", Durchschnitt: " & _ FormatNumber((VotingSum / rs.RecordCount),2)) else Response.Write("1 Bewertung, Durchschnitt: " & _ rs.Fields("Voting_Number").Value) end if end if rs.Close set rs = nothing end function |
Es erfolgt ein Zugriff auf die Datenbank, wurde bislang noch keine Bewertung abgegeben wird "Bisher keine Abstimmung" angezeigt, ansonsten die Anzahl inklusive dem Durchschnitt der Bewertungen. Diese beiden Aufgaben wurden bewusst in 2 einzelne Funktionen aufgeteilt. Mal angenommen, Sie möchten Ihren Besuchern zwar eine Bewertungsmöglichkeit bieten, das Ergebnis daraus jedoch öffentlich nicht darstellen, müssen Sie nur den Funktionsaufruf für die Darstellung der Bewertungen weglassen.
Um in einer Seite das Voting zu ermöglichen, müssen Sie dazu nur 2 Dateien inkludieren und 2 Funktionen aufrufen:
'Benötigte Dateien inkludieren %><!-- #include file="Pfad.asp" --><% %><!-- #include file="~include/inc_voting.asp" --><%
call ShowVotingForm() call ShowVotingResult() %> |
Die Datei Pfad.asp, die Sie vielleicht schon aus anderen Skripts kennen, hat eine Funktion um den Datenbankpfad inklusive den Treiberdaten zurückzugeben. Falls Sie das Ergebnis nicht darstellen möchte, brauchen Sie dazu nur den Aufruf der Funktion ShowVotingResult löschen.
Nun wird noch eine Seite benötigt, welche die Bewertungen in die Datenbank schreibt. Natürlich wird in dieser Seite Voting.asp geprüft, ob alle Angaben korrekt sind. Alle Dateien inklusive der Datenbank sind natürlich im Download mit enthalten.
Herunterladen: tip87.zip
|
|