Hi,
ich hab mir ein kleines Bewertungs-Script geschrieben, jedoch klappt die Durchschnittsberechnung der Bewertung nicht so wie ich das gern hätte.
Es werden zwar Anzahl und Summe der Bewertungen gespeichert, jedoch wird für den Durchschnittswert immer die vorherige Summe der Bewertungen durch die Anzahl geteilt und nicht die aktuelle Summe.
Mein Code sieht wie folgt aus:
Für summe_bewertungen gibt es bei mir die möglichen Zahlen 1,2,3,4,5.
Unter $top_wert berechne ich den Durchschnittswert, jedoch hakt es da irgendwie.
Nehmen wir mal an, BEVOR jemand eine neue Bewertung abgibt sind die Felder gesamt_bewertungen = 5 und summe_bewertungen = 20
Der User bewertet mit 3, also setze ich summe_bewertungen um 3 höher auf 23 und gesamt_bewertungen erhöht sich um 1 auf 6.
Das klappt auch, jedoch wird dann als $top_wert 4 eingetragen (weil Daten von vor der aktuellen Bewertung genommen werden) und nicht 3,8333 wie es eigentlich sein sollte.
Wenn nun ein anderer User bewertet, dann wird als $top_wert 3,8333 eingetragen....
Problem ist also, dass nicht die aktuellen Daten sondern immer die von der vorherigen Bewertung zur Grundlage gelegt werden um den Durchschnittswert zu berechnen...
Wo liegt denn da der Fehler?
Ich kann keine Lösung finden.
Vielen Dank
ich hab mir ein kleines Bewertungs-Script geschrieben, jedoch klappt die Durchschnittsberechnung der Bewertung nicht so wie ich das gern hätte.
Es werden zwar Anzahl und Summe der Bewertungen gespeichert, jedoch wird für den Durchschnittswert immer die vorherige Summe der Bewertungen durch die Anzahl geteilt und nicht die aktuelle Summe.
Mein Code sieht wie folgt aus:
PHP-Code:
mysql_query("UPDATE bewertungen SET
gesamt_bewertungen = gesamt_bewertungen+1
WHERE music_id='".$got_music_file['music_id']."'");
mysql_query("UPDATE bewertungen SET
summe_bewertungen =summe_bewertungen+4
WHERE music_id='".$got_music_file['music_id']."'");
$top_wert = $got_music_file['summe_bewertungen']/$got_music_file['gesamt_bewertungen'];
mysql_query("UPDATE joovili_music SET
rate_sum = $top_wert
WHERE music_id='".$got_music_file['music_id']."'");
Für summe_bewertungen gibt es bei mir die möglichen Zahlen 1,2,3,4,5.
Unter $top_wert berechne ich den Durchschnittswert, jedoch hakt es da irgendwie.
Nehmen wir mal an, BEVOR jemand eine neue Bewertung abgibt sind die Felder gesamt_bewertungen = 5 und summe_bewertungen = 20
Der User bewertet mit 3, also setze ich summe_bewertungen um 3 höher auf 23 und gesamt_bewertungen erhöht sich um 1 auf 6.
Das klappt auch, jedoch wird dann als $top_wert 4 eingetragen (weil Daten von vor der aktuellen Bewertung genommen werden) und nicht 3,8333 wie es eigentlich sein sollte.
Wenn nun ein anderer User bewertet, dann wird als $top_wert 3,8333 eingetragen....
Problem ist also, dass nicht die aktuellen Daten sondern immer die von der vorherigen Bewertung zur Grundlage gelegt werden um den Durchschnittswert zu berechnen...
Wo liegt denn da der Fehler?
Ich kann keine Lösung finden.
Vielen Dank
Kommentar