asphelper.de - Tipps & Skripts - Voting - Eine Seite oder ein Beitrag bewerten

Link: Wichtiger Hinweis in eigener Sache!


 Autor: Klaus Keller Erstellt am: 2005-10-31 Aufrufe: 5611 


 << Vorheriger Tipp Nächster Tipp >>



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>
        &nbsp;<input type="radio" id="Voting_Number" name="Voting_Number" value="1" /> 1
        &nbsp;<input type="radio" id="Voting_Number" name="Voting_Number" value="2" /> 2
        &nbsp;<input type="radio" id="Voting_Number" name="Voting_Number" value="3" /> 3
        &nbsp;<input type="radio" id="Voting_Number" name="Voting_Number" value="4" /> 4
        &nbsp;<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


 << Zum vorherigen Tipp 86:
Anzahl der Wörter ermitteln

 Zum nächsten Tipp 88 >>
Datenbank komprimieren/kompaktieren

top top
© Copyright By Klaus Keller, 2001-2008 - Alle Rechte vorbehalten.