BlackBoard » Design, Programmierung & Entwicklung » Programmieren » PHP 5 Sterne Bewertung » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen 5 Sterne Bewertung
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Champus Champus ist männlich
BlackBoarder


images/avatars/avatar-2272.png

Dabei seit: 24.03.2002
Beiträge: 1.649
Herkunft: Karlsruhe

5 Sterne Bewertung       Zum Anfang der Seite springen

Kleine Frage:
Wie lautet die Vorgehensweise für eine 5-Sterne-Bewertung, wie es sie z.B. hier im Forum für Beiträge gibt?

Benutzer wählt zwischen 1 und 5 aus, dieser Wert wird in die Datenbank eingetragen - zweiter Benutzer wählt anderen Wert zwischen 1 und 5 aus, jetzt muss ja der Durchschnitt davon errechnet und gespeichert werden - wie funktioniert dies?

gruß
corvus

__________________
CorvusCorone -> Champus
20.08.2006 11:41 Champus ist offline Homepage von Champus Beiträge von Champus suchen
LX LX ist männlich
El Comandante en Jefe


images/avatars/avatar-2290.gif

Dabei seit: 25.11.2001
Beiträge: 5.372
Herkunft: Berliner Bronx

Achtung       Zum Anfang der Seite springen

Eine Datenbank brauchst du dafür nicht zwangsweise, man könnte es auch über Textdateien auf dem Dateisystem lösen... aber eine Datenbank wäre natürlich einfacher zu handhaben.

Im Grunde genommen brauchst du dafür nicht allzuviel beachten. Speichern würde ich mit jedem Vote die ID der entsprechenden Abstimmung (falls du mehrere verschiedene Sachen bewerten lassen willst), die entsprechende Punktzahl (von 1 bis 5 in deinem Beispiel), dazu noch die IP-Adresse und einen Timestamp.

Anhand der letzten beiden Informationen kannst du sicherstellen, dass der gleiche Benutzer nicht mehrfach hintereinander abstimmt, indem du Votes von der gleichen IP für einen bestimmten Zeitraum nach dem ersten Vote einfach unterbindest. Diesen Punkt kannst du auch einfacher haben, wenn du wie beispielsweise hier im Board einen festen angemeldeten Benutzerkreis hast, der nur abstimmen darf. Dann bräuchtest du statt IP und Timestamp nur die Benutzer-ID mit ablegen, da dann jeder angemeldete Benutzer eben nur einmal abstimmen kann.

Das ganze Zeug in der Datenbank dann auszuwerten sollte das geringste Problem sein. Wie man einen Durchschnitt berechnet, sollte man irgendwann mal in der Schule gehabt haben, ansonsten würde dir MySQL das mittels der AVG()-Funktion sogar abnehmen großes Grinsen

Etwas komfortabler kannst du es für den Benutzer noch machen, indem du nach erfolgter Abstimmung einen Cookie setzt, in dem vermerkt wird, dass der Benutzer schon abgestimmt hat. So kannst du prüfen, ob beim erneuten Aufruf der entsprechenden Seite nochmal das Bewertungsformular angezeigt werden soll oder gleich das Abstimmungsergebnis. Wenn du nur angemeldete Nutzer hast, kannst du das natürlich auch ohne Cookie lösen.

__________________
JS-Games.de - Misled Scripting Skills Gone Mad | Meine Filmkritiken | Urban Photography
Kommt mal in den IRC-Channel: irc.eu.freenode.net | Port 6667 | #blackboard

"Ever tried. Ever failed. No matter.
Try again. Fail again. Fail better."
- Samuel Beckett

20.08.2006 12:20 LX ist offline E-Mail an LX senden Homepage von LX Beiträge von LX suchen
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
BlackBoard » Design, Programmierung & Entwicklung » Programmieren » PHP 5 Sterne Bewertung

Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH