iceget

Bewertungssystem wie berechnen?

Hallo liebe Community,

ich habe folgendes Problem:

Die Benutzer auf einer Website (angemeldet mit ihrer email) dürfen Rezepte bewerten.

Meine Datenbank sieht wie folgt aus:

Rezepte:
id, titel, Beschreibung

Rezepte_Bewertungen:
id, rezeptid, userid, Bewertung

Jeder der Benutzer darf das Rezept nur einmal bewerten.

Dazu kann er 1 bis 5 Sterne vergeben.

Nun habe ich z.B. folgende Auswertung:

Rezepte_Bewertungen,
1, 100, 10, 5
2, 100, 11, 3
3, 100, 12, 5
4, 100, 13, 2
5, 100, 14, 1
6, 100, 15, 3
7, 100, 16, 3
8, 100, 17, 3
9, 100, 18, 5
10, 100, 19, 5
11, 100, 20, 4

Nun habe ich für das Rezept mit der id 100, 11 Bewertungen:

1 Stern: 1
2 Sterne: 1
3 Sterne: 4
4 Sterne: 1
5 Sterne: 4

Mein Problem ist nun folgendes:
Ich weiß nicht wie ich die Bewertung auf der Website anzeigen / berechnen soll?

Im Endeffekt soll das Rezept nur so viele Sterne bekommen wie in Summe der Durchschnitt ergibt?

Ich habe schon einiges berechnen versucht, auch die einzelnen Sterne zusammen gezählt / die Gesamtanzahl.
Ich bekomme immer nur zahlen raus die größer als 5 sind (was auch logisch ist).

Wie kann ich dieses Problem lösen?

Vielen Dank schon mal vorweg
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 278717

Url: https://administrator.de/forum/bewertungssystem-wie-berechnen-278717.html

Ausgedruckt am: 27.07.2025 um 11:07 Uhr

wiesi200
Lösung wiesi200 29.07.2015, aktualisiert am 30.07.2015 um 10:39:58 Uhr
Hallo,
nö das du nur Zahlen größer 5 raus bekommst ist nicht logisch wenn du den Durchschnitt berechnen willst.

Anzahl der Sterne / Anzahl Bewertungen.
Und das würd ich mir eigentlich sogar eher vom SQL bei der Abfrage berechnen lassen. Sollte schneller gehen als die Daten an PHP zu übergeben und dann dort zu berechnen

Edit: Übrigens deine Tabellendarstellung ist falsch.
Spalte 1 ist wenn dann von 1 bis x durchnummeriert.
Spalte 2 sollte überall eine 1 drinnen stehen.
evolution
evolution 29.07.2015 um 21:05:46 Uhr
Na am einfachsten im SQL mit einem AVG() berechnen lassen.

Google doch mal "build star rating system sql php", da findest du hunderte Anleitungen.. Ein Beispiel: codular.com/part-2-rating-system
Snowman25
Snowman25 30.07.2015 aktualisiert um 10:53:33 Uhr
Den Durchschnitt bildet man durch Zusammenzählen der Punkte und dann das Teilen durch die Gesamtanzahl Bewertungen.
Das ist Mathe 2. Klasse. (Falls nicht sogar erste)

Beispiel:
WertungAnzahl
11
21
34
41
54

Insgesamt 11 Stimmen:
WertungAnzahl
11 +
21 +
34 +
41 +
54
--
STIMMEN11

Jetzt zur SUMME:
Wertung * AnzahlErgebnis
1 * 11
2 * 12
3 * 412
4 * 14
5 * 420
SUMME39

Endergebnis:
SUMME / STIMMENERGEBNIS
39 / 113,5454...

Das Rezept hat also 3,5 Sterne.


Gruß,
@Snowman25
iceget
iceget 30.07.2015 aktualisiert um 10:45:30 Uhr
Hi wiesi 200,

danke. ich hab's gestern auch so berechnet nur habe ich in PHP vergessen die Klammern zu setzen, das war mein Problem...!

So funktionierts:

$bewertungsdurchschnitt = round((($BW_EINS*1)+($BW_ZWEI*2)+($BW_DREI*3)+($BW_VIER*4)+($BW_FUENF*5))/$DBsummary);

Und ja, Du hattest recht. Ich habe das Autoincrement nicht reingeschrieben.

Vielen Dank


Zitat von @wiesi200:

Hallo,
nö das du nur Zahlen größer 5 raus bekommst ist nicht logisch wenn du den Durchschnitt berechnen willst.

Anzahl der Sterne / Anzahl Bewertungen.
Und das würd ich mir eigentlich sogar eher vom SQL bei der Abfrage berechnen lassen. Sollte schneller gehen als die Daten an
PHP zu übergeben und dann dort zu berechnen

Edit: Übrigens deine Tabellendarstellung ist falsch.
Spalte 1 ist wenn dann von 1 bis x durchnummeriert.
Spalte 2 sollte überall eine 1 drinnen stehen.