Problem mit Vote auswerten

icefire

Erfahrenes Mitglied
Hallo!

In verschieden Posts habe ich schon was dazu gefunden und ausprobiert. Um den Wert zu errechenen den ich haben möchte (Durchschnittswert) habe ich folgenden Code:

PHP:
$aktuell = mysql_query("SELECT * FROM map_list"); 
$ergebnis = 0; 
while($data = mysql_fetch_array($aktuell)) { 
$ergebnis += ($data[map_rate] /= $data[map_vote]); 
}
echo $ergebnis;

Das Ergebnis wird auch angezeigt aber auch folgende Fehlermeldung:
Division by zero in <b>/home/web2/html/map_cs.php</b> on line <b>46</b>

Und das gleich 12 mal - das entspricht der Zahl die in der map_rate steht!

Was ist da verkehrt?
 
Ja schon - das $ergebnis ist ja am Anfang auf 0 gestellt. Aber wie kann ich die Fehlermeldung ausschalten? Gibts noch eine andere Möglichkeit einen Durchschitt zu errechnen?
 
PHP:
$aktuell = mysql_query("SELECT map_rate, map_vote, COUNT(*) As Anzahl FROM map_list"); 
$ergebnis = 0; 
while($data = mysql_fetch_array($aktuell)) { 
$ergebnis += $data['map_rate'];
} 
$ergebnis /= $data['Anzahl'];
echo $ergebnis;
 
Seltsam....:(

Warning: Supplied argument is not a valid MySQL result resource in home/web2/html/map_cs.php on line 45
Warning: Division by zero in /home/web2/html/map_cs.php on line 48


Kann den der Fehler noch wo anders liegen..evtl.. an der Abfrage , Datenbank usw.?
 
Habe immer noch nicht das Problem gelöst. Habe zwar den Code eingebaut und das Ergebnis wird angezeigt aber die Fehlermeldungen (Warning: Division by zero in /home/web2/html/downloads/map_cs.php on line 52) bleiben. Hier die aktuelle Abfrage mit der Berechnung und Ausgabe:
PHP:
$link=mysql_query("SELECT * FROM map_list ORDER BY map_id DESC");      
echo mysql_error();
while($data = mysql_fetch_array($link))
{
$ergebnis = $data[map_rate] / $data[map_vote];
if ($data[map_typ] == 'cs')
{	
printf("<tr bgcolor='%s'>
<td colspan=2 align=center>
[<a name=\"".$data[jumper]."\" href=\"".$path.$srf.$data[map_name].$exf."\">Download</a>] 
*** Eure Bewertung: [".substr($ergebnis,0,4)."]
[<a href=\"index.php?file=downloads/vote&map_id=".$data[map_id]."\">Vote?</a>]</td>
</tr>", bgcolor(1));

Ich habe bereits mit echo $data[map_vote]; und echo $data[map_vote]; nachgesehen ob überhaupt ein Wert ausgegeben wird - und tatsächlich werden die aktuellen Daten 39 und 9 ausgegeben. Ich kann mir das einfach nicht erklären, weil nirgens ein Wert 0 auftaucht! Bleibt nur noch anzumerken, das 12 mal die gleiche Fehlermeldung angezeigt wird.....!:(
 
Um die Fehlermeldung division by zero zu unterdrücken könnteste, wenn Du die bc* fkt. eincompiled hast, folgendes versuchen

$ergebnis = @bcdiv($data[map_rate],$data[map_vote]);

Sicher bin ich mir da allerdings nicht.

Ne andere Möglichkeit wär noch

error_reporting(E_NONE);

aber richtiger ist es vorher zu prüfen ob einer der beiden summanden = 0 ist und dann den Durchschnitt auch auf 0 zu setzen :-)
 
Probiers mal mit

PHP:
$ergebnis = $data['map_rate'] / $data['map_vote'];

Die ' müssen eigentlich da in ;)

Wenn das auch nicht geht dann ist $data['map_vote'] entweder 0 oder NULL oder so...Oder deine Fehlermeldung gibst du manuell aus...;)
 
Zurück