Seite 1 von 1

bcdiv(): Division by zero

Verfasst: So 20.Mär, 2022 14:22
von Icke
Hallo,

wer kann helfen I PHP 7.4 bekomme ich folgende Fehlermeldung:

PHP Warning: bcdiv(): Division by zero in :eek:
$bewert = bcdiv( $vote, $vote_poi, 2 );
Die berechnung und Ausgabe erfolgt fehlerfrei!

Re: ???

Verfasst: So 20.Mär, 2022 17:18
von oxpus
Treffender Titel für ein neues Thema :pfff

Bist Du Dir sicher, dass $vote_poi an dieser Stelle wirklich ungleich 0 ist und $vote auch einen Wert enthält?

Re: ???

Verfasst: Mo 21.Mär, 2022 05:53
von Icke
Hallo Oxpus,

ja !!!

Habe das in die Datei eingefügt:
<?php
$id = $_REQUEST['id'];
// Vote berechnen
echo $vote;
echo " ";
echo $vote_poi;

$bewert = bcdiv( $vote, $vote_poi, 2 );
und das steht dann im WWW.
Bild
?4

Re: ???

Verfasst: Mo 21.Mär, 2022 17:23
von oxpus
Also eine Fehlermeldung kann es dann eigentlich nicht geben, denn dann hätte $bewert den Wert "false" und nicht 5.00.
Und mit deinem Script habe ich auch keine Fehlermeldungen, auch nicht im Server-Log. Und auch getestet unter PHP 7.4.

Aber vielleicht klappt es so bei Dir: $bewert = bcdiv( (int) $vote, (int) $vote_poi, 2 );
Alternativ geht aber auch dieses hier:

Code: Alles auswählen

$bewert = number_format((int) $vote / (int) $vote_poi, 2);
Ist das gleiche Ergebnis.

Re: bcdiv(): Division by zero

Verfasst: Mi 23.Mär, 2022 07:34
von Icke
Guten Morgen Oxpus,

habe das so in die Datei übernommen.

ERROR_LOG Heute:
23.03.2022 02:22:21 wasserwelt.org [client 20.87.24.0] PHP Warning: Division by zero in /mnt/web424/a2/56/59917356/htdocs/vote_sta.php on line 5
Code:
<?php
$id = $_REQUEST['id'];
// Vote berechnen

$bewert = number_format((int) $vote / (int) $vote_poi, 2);

if($bewert==1) { $bewert_erg = '<img src="../layout/vote_0.gif">'; }
hast du da noch eine Idee ? :hurra:

Re: bcdiv(): Division by zero

Verfasst: Mi 23.Mär, 2022 08:04
von oxpus
Noch mal:

Sind die Variablen wirklich gesetzt, bevor diese zur Berechnung herangezogen werden?
Nach dem Codeausschnitt sieht das nämlich nicht so aus!

Die Fehlermwldung erscheint auch nur, wenn $vote_poi nicht gesetzt oder 0 ist.

Re: bcdiv(): Division by zero

Verfasst: Do 24.Mär, 2022 07:30
von Icke
Guten Morgen Oxpus,

ja die Variablen sind gesetzt!

Beispiel:
// Statistiken abfragen
$sql_ = " SELECT * FROM tiere_art_vote WHERE id = $tier_id ";
if($result = mysqli_query($db, $sql_))
{
while($row = $result->fetch_assoc())
{
$clicks = $row['clicks'];
$vote_poi = $row['vote_poi'];
$vote = $row['vote'];
}
// Clicks speichern
$clicks = $clicks+1;
$sql__ = " UPDATE tiere_art_vote SET clicks = $clicks WHERE id = $tier_id ";
$geandert = mysqli_query($db, $sql__);
}
Ansicht im WWW Bild:

Re: bcdiv(): Division by zero

Verfasst: Do 24.Mär, 2022 13:19
von oxpus
Das ist wieder nur ein Ausschnitt...

Wird die Berechnung danach durchgeführt?

Vermutlich gibt es auch Beispiele, die noch nicht bewertet sind, also dann $vote_poi wirklich 0 ist.
Daher dann auch die Fehlermeldung
Eine if-Bedingung um die Berechnung wäre dann also angebracht, um eine vorhandene 0 abzufangen. ;-)

Re: bcdiv(): Division by zero

Verfasst: Fr 25.Mär, 2022 06:55
von Icke
Guten Morgen Oxpus,

Habe eine if Abfrage hinzu gefügt.

Error_log Heute:
25.03.2022 04:36:03 wasserwelt.org [client 40.77.39.0] AH01215: PHP Warning: Division by zero in /mnt/web424/a2/56/59917356/htdocs/vote_sta.php on line 6: /home/strato/http/premium/rid/73/56/59917356/htdocs/tiere/detail.php
25.03.2022 04:45:23 wasserwelt.org [client 54.36.21.0] AH01215: PHP Warning: Division by zero in /mnt/web424/a2/56/59917356/htdocs/vote_sta.php on line 6: /home/strato/http/premium/rid/73/56/59917356/htdocs/tiere/detail.php
25.03.2022 04:49:02 wasserwelt.org [client 54.36.20.0] AH01215: PHP Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, bool given in /mnt/web424/a2/56/59917356/htdocs/wracks/liste.php on line 19: /home/strato/http/premium/rid/73/56/59917356/htdocs/wracks/liste.php

Re: bcdiv(): Division by zero

Verfasst: Fr 25.Mär, 2022 07:56
von oxpus
Kann ich jetzt wieder nur raten, solange ich nicht den gesamten Code sehe, anstatt weiterhin einzelne Ausschnitte.

Re: bcdiv(): Division by zero

Verfasst: Fr 25.Mär, 2022 16:47
von Icke
Hallo Oxpus,

hier ist der Code der vote_sta.php
<?php
$id = $_REQUEST['id'];

// Vote berechnen
if($vote_poi!=0)
{
$bewert = number_format((int) $vote / (int) $vote_poi, 2);
}
if($bewert==1) { $bewert_erg = '<img src="../layout/vote_0.gif">'; }

if($bewert==2) { $bewert_erg = '<img src="../layout/vote_0.gif"><img src="../layout/vote_0.gif">'; }

if($bewert==3) { $bewert_erg = '<img src="../layout/vote_0.gif"><img src="../layout/vote_0.gif"><img src="../layout/vote_0.gif">'; }

if($bewert==4) { $bewert_erg = '<img src="../layout/vote_0.gif"><img src="../layout/vote_0.gif"><img src="../layout/vote_0.gif"><img src="../layout/vote_0.gif"> '; }

if($bewert==5) { $bewert_erg = '<img src="../layout/vote_0.gif"><img src="../layout/vote_0.gif"><img src="../layout/vote_0.gif"><img src="../layout/vote_0.gif"><img src="../layout/vote_0.gif"> '; }


?>
<link href="style_1e1f88.css" rel="stylesheet" type="text/css">

<table width="98%" border="0" cellpadding="5" cellspacing="0" class="table_box">
<tr>
<td height="35" colspan="2" class="text_ueber"><?php echo $text_0376; ?></td>
<td height="35" class="text_ueber"><?php echo $text_0376; ?>&nbsp;&Oslash;&nbsp;<? echo $bewert; ?></td>
</tr>
<tr>
<td width="6%" class="text"><?php echo $text_0266; ?></td>
<td width="47%" class="text"><?php echo $clicks; ?>&nbsp;<?php echo $text_0255; ?>&nbsp;<span class="error"><?php echo $text_0414; ?></span></td>
<td width="47%" rowspan="2"><span class="navi_sub">&nbsp;<?php echo $bewert_erg; ?></span></td>
</tr>
<tr>
<td valign="top" class="text"><?php echo $text_0267; ?></td>
<td valign="top" class="text"><?php echo $vote_poi; ?> <?php echo $text_0268; ?>&nbsp;<span class="error"><?php echo $text_0413; ?></span></td>
</tr>
</table>

Re: bcdiv(): Division by zero

Verfasst: Fr 25.Mär, 2022 17:00
von Icke
und diese Datei wird nur includet.

hier die Abfrage:
/ Statistiken abfragen
$sql_ = " SELECT * FROM tiere_art_vote WHERE id = $tier_id ";
if($result = mysqli_query($db, $sql_))
{
while($row = $result->fetch_assoc())
{
$clicks = $row['clicks'];
$vote_poi = $row['vote_poi'];
$vote = $row['vote'];
}
// Clicks speichern
$clicks = $clicks+1;
$sql__ = " UPDATE tiere_art_vote SET clicks = $clicks WHERE id = $tier_id ";
$geandert = mysqli_query($db, $sql__);
}

Re: bcdiv(): Division by zero

Verfasst: Fr 25.Mär, 2022 17:19
von oxpus
Die Datei vote_sta.php wird nach der Abfrage eingebunden, hoffe ich mal?

Dann wäre die Bedingung so auch nicht ausreichend.
Besser so:

Code: Alles auswählen

if(!empty($vote_poi) and (int) $vote_poi > 0)
Denn es könnte ja auch keine Bewertung vorliegen, $vode_poi also erst gar nicht gesetzt werden.
Da vor der Abfrage $vote_poi nicht initiiert wird und somit nach der Abfrage weiterhin "leer", also ungesetzt sein kann, wäre ein $vote_poi != 0 nicht aussagekräftig, denn "leer" ist auch != 0 ;)

BTW:
Das ist wirklich das letzte Thema, in dem Quote anstatt Code für Codeauszüge oder ganze Dateien geduldet wird.
Zukünftige Themen werden bei weiteren Verstößen kommentarlos geschlossen!

Re: bcdiv(): Division by zero

Verfasst: Fr 25.Mär, 2022 18:01
von Icke
Hallo Oxpus,

habe das mal so in die Datei übernommen . danke. :)