Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : fehler beim bewerten...



inge
12-05-2006, 13:22
$vote=$_POST['vote'];
$vote= intVal($vote);

$sql="SELECT * FROM `gallery` WHERE `id`='$id' ";
$row=mysql_fetch_assoc(mysql_query($sql));

$bewertungen=$row['bewertungen'];

$bewertungen++;


$durchschnitt= ((($row['bewertungen'] * $row['durchschnitt']) + $vote) / $bewertungen );


$sql="UPDATE `bilder` Set `bewertungen`='$bewertungen' WHERE `id`='$id'";
mysql_query($sql);

$sql="UPDATE `bilder` Set `durchschnitt` ='$durchschnitt' WHERE `id`='$id'";
mysql_query($sql);



irgendwie zählt der bei den bewertungen immer nur runter, dass heißt nu negative bewertungen werden in den durchschnitt aufgenommen, die anzahl der bewertungen werden richtig gezählt...

kann mir da vielleicht jemand weiterhelfen?

danke schon mal...

BLUESCREEN3D
12-05-2006, 14:01
Zuerst liest du die Anzahl der Bewertungen aus "gallery" aus, schreibst sie dann aber in "bilder"?
Und falls das der Fehler war, dann solltest du außerdem die drei Queries zu einem Query zusammenfassen, damit das ganze atomar ist - ansonsten hast du da vermutlich eine Race Condition drin.

Außerdem solltest du nicht den bisherigen Durchschnitt speichern - das führt nur zu Rundungsfehlern. Speicher stattdessen die Summe der bisherigen Bewertungen.

edit: Ist es gewollt, dass man für "vote" beliebige Werte zwischen -2 Milliarden und +2 Milliarden übergeben kann (bei einem 32bit-System)?

inge
12-05-2006, 16:02
oh, stimmt auf die weise hat es geklappt, danke...