bcdiv(): Division by zero

PHP, Ajax, CSS, HTML, Javascript
Eben für die wirklich Harten, die alles selber machen.
Antworten
Icke
Beiträge: 73
Registriert: So 20.Jun, 2021 16:15

bcdiv(): Division by zero

Beitrag 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!
Zuletzt geändert von oxpus am Mo 21.Mär, 2022 17:29, insgesamt 1-mal geändert.
Grund: Thementitel war nichtssagend.
Benutzeravatar
oxpus
Administrator
Beiträge: 28713
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Re: ???

Beitrag 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?
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Icke
Beiträge: 73
Registriert: So 20.Jun, 2021 16:15

Re: ???

Beitrag 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
Benutzeravatar
oxpus
Administrator
Beiträge: 28713
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Re: ???

Beitrag 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.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Icke
Beiträge: 73
Registriert: So 20.Jun, 2021 16:15

Re: bcdiv(): Division by zero

Beitrag 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:
Benutzeravatar
oxpus
Administrator
Beiträge: 28713
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Re: bcdiv(): Division by zero

Beitrag 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.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Icke
Beiträge: 73
Registriert: So 20.Jun, 2021 16:15

Re: bcdiv(): Division by zero

Beitrag 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:
Benutzeravatar
oxpus
Administrator
Beiträge: 28713
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Re: bcdiv(): Division by zero

Beitrag 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. ;-)
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Icke
Beiträge: 73
Registriert: So 20.Jun, 2021 16:15

Re: bcdiv(): Division by zero

Beitrag 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
Benutzeravatar
oxpus
Administrator
Beiträge: 28713
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Re: bcdiv(): Division by zero

Beitrag von oxpus »

Kann ich jetzt wieder nur raten, solange ich nicht den gesamten Code sehe, anstatt weiterhin einzelne Ausschnitte.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Icke
Beiträge: 73
Registriert: So 20.Jun, 2021 16:15

Re: bcdiv(): Division by zero

Beitrag 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>
Icke
Beiträge: 73
Registriert: So 20.Jun, 2021 16:15

Re: bcdiv(): Division by zero

Beitrag 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__);
}
Benutzeravatar
oxpus
Administrator
Beiträge: 28713
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Re: bcdiv(): Division by zero

Beitrag 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!
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Icke
Beiträge: 73
Registriert: So 20.Jun, 2021 16:15

Re: bcdiv(): Division by zero

Beitrag von Icke »

Hallo Oxpus,

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