Autor Zpráva
stepi15
Profil
Warning: Division by zero in /home/www/scorpions.cz/subdomains/rstools/lang/pokus_cz.php on line 49

nevite co je to za chybu vznike kdyz do vzorv¨ce je promena -1 nejspis

http://rstools.scorpions.cz/index.php?link=pokus

kod
<center>
<form action="" method="post">
RuneScape Name: <input name="username" value="<?=$_POST["username"]?>" type="text" maxlength="12" size="12">
<input type="submit" value="Look Up" name="sub">
<?php
  if($_POST["sub"]=="Look Up") {
?>
<hr>  
<b>Personal scores for <?=$_POST["username"]?></b>
<hr>
</center>
<?php
if($_POST["sub"]=="Look Up") {
  $username = strtolower($_POST["username"]);
  $level = file_get_contents("http://hiscore.runescape.com/index_lite.ws?player=$ username");
  $rank = file_get_contents("http://hiscore.runescape.com/index_lite.ws?player=$ username");
  $xp = file_get_contents("http://hiscore.runescape.com/index_lite.ws?player=$ username");
  function dajlvl($trojka) {
  $trojka = explode(",",$trojka);
  return $trojka[1];
  }
  function dajxp($trojka) {
  $trojka = explode(",",$trojka);
  return $trojka[2];
  }
  function dajrank($trojka) {
  $trojka = explode(",",$trojka);
  return $trojka[0];
  }
  $level = explode("\n",$level);
  $rank = explode("\n",$rank);
  $xp = explode("\n",$xp);
//-------------------------------------------------------------------- ----
  function experience($L) {
    $a=0;
    for($x=1; $x<$L; $x++) {
      $a += floor($x+300*pow(2, ($x/7)));
    }
    return floor($a/4);
  }
  $attack_1= dajlvl($level[1]) + 1;
  $attack_xp1=experience($attack_1);
  $attack_2= dajlvl($level[1]);
  $attack_xp2=experience($attack_2);
//__________attack__________\\
  $attack_lvl = dajlvl($level[1]);
  $attack_rank = number_format (dajrank($rank[1]),0,'.',' ');
  $attack_xp = number_format (dajxp($xp[1]),0,'.',' ');
  $attack_progress = round(100-((($attack_xp1 - dajxp($xp[1])) / ($attack_xp1 - $attack_xp2))*100));
  $attack_next = number_format ($attack_xp1 - dajxp($xp[1]),0,'.',' ');

  if(dajlvl($level[1]) == -1) $attack_lvl = "1";
  if(dajlvl($level[1]) == -1) $attack_rank = "Not Ranked";
  if(dajlvl($level[1]) == -1) $attack_xp = "- -";
  if(dajlvl($level[1]) == -1) $attack_progress = "0";
  if(dajlvl($level[1]) == -1) $attack_next = "- -";
  if(dajlvl($level[1]) == 99) $attack_next = number_format (13034431 - dajxp($xp[1]),0,'.',' ');
  if(dajlvl($level[1]) == 99) $attack_progress = 100;
}
?>
&nbsp;
<!-------------------- Skills -------------------->
<table border="1" cellspacing="0" cellpadding="2" align="center" style="border-collapse: collapse"
bordercolor="#222222">
  <tr>
    <td colspan="2" align="center">Skill</td>
    <td align="center">Level</td>
    <td align="center">Rank</td>
    <td align="center">XP</td>
    <td align="center">Progress To Next Level</td>   
    <td align="center">XP To Next Level</td>
  </tr>
  
  <tr title="Attack">
    <td align="center" title="icon"><img src="img/skill_ico/attack.gif"></td>
    <td align="left" title="skill">Attack</td>
    <td align="center" title="level"><?=$attack_lvl?></td>
    <td align="center" title="rank"><?=$attack_rank?></td>
    <td align="center" title="xp"><?=$attack_xp?></td>
    <td align="center" title="progress"><img src="img/bar/<?=$attack_progress?>.gif" border="0"></td>
    <td align="center" title="xp to next lvl"><?=$attack_next?></td>
  </tr>
</table>
</center>
<?php
  }
?>
</form>
nightfish
Profil
nevite co je to za chyb
víme
je to upozornění, že se dělí nulou...
TSD
Profil
Spočítal sis, o který řádek se jedná?
Já jsem to za tebe udělal a jde o toto:

  $attack_progress = round(100-((($attack_xp1 - dajxp($xp[1])) / ($attack_xp1 - $attack_xp2))*100));
Adam Zábranský
Profil
stepi15
jestli je to ta řádka, kterou psal TSD, tak buď neexistují proměnné attack_xp1 a attack_xp2 nebo se jejich rozdíl rovná 0. Být tebou tak bych si to ošetřil... třeba
if($attack_xp1 - $attack_xp2 <> 0) 
{
  $attack_progress = round(100-((($attack_xp1 - dajxp($xp[1])) / ($attack_xp1 - $attack_xp2))*100));
}else {
  $attack_progress = 0;
}
nebo lépe
$attack_progress = ($attack_xp1 - $attack_xp2 <> 0 ? round(100-((($attack_xp1 - dajxp($xp[1])) / ($attack_xp1 - $attack_xp2))*100)) : 0);
Joker
Profil
Adam Zábranský
Anebo to samé, jen kratším zápisem:
$attack_progress = ($attack_xp1 == $attack_xp2) ? 0 : round(100-((($attack_xp1 - dajxp($xp[1])) / ($attack_xp1 - $attack_xp2))*100));

Každopádně rada: Pokud máte problém se skriptem a v chybové hlášce je napsané, kterého řádku se to týká, označte i v dotazu ten řádek.
stepi15
Profil
diky zkusim to jsem zacatecnik tak sjem rad ze jsem se dopracoval az sem
Leni
Profil *
Mám podobný problém. Můžete mi poradit co s tím? Vertrigo mi vypisuje tuhle chybu -
Warning: Division by zero in C:\VertrigoServ\www\hlidac.php on line 41

Warning: Division by zero in C:\VertrigoServ\www\hlidac.php on line 47

$content1 = "<table style=\"padding: 0px;\" width=\"100%\"><tbody><tr><td class=\"bottom\" style=\"padding: 5px;\" align=\"center\" width=\"50%\"><table class=\"main\" height=\"75\" width=\"100%\"><tbody><tr valign=\"top\"><td style=\"padding: 0px;\" align=\"center\" width=\"75\"><div style=\"overflow: hidden; width: 75px; height: 75px;\"><img src=\"$avatar\" width=\"75\"></div></td><td>
<table class=\"main\"><tbody><tr><td class=\"embedded\" style=\"padding: 5px;\" width=\"80%\"><a href=\"account-details.php?id=$arr[hlidacid]\"><b>$arr1[username]</b></a> ($class)<br><br>Ratio: <b>".round($arr1['uploaded']/$arr1['downloaded'], 2)."</b>$lacc<br>&nbsp;</td>
<td class=\"embedded\" style=\"padding: 5px;\" width=\"20%\"><br><a href=\"takedelhlidac.php?delid=$arr[hlidacid]\">Smazat</a><br><br><a href=\"account-inbox.php?receiver=$fname\">Poslat PM</a></td></tr>
</tbody></table></td></tr></tbody></table>
				 </td>";
				
$content2 = "<td class=\"bottom\" style=\"padding: 5px;\" align=\"center\" width=\"50%\"><table class=\"main\" height=\"75\" width=\"100%\"><tbody><tr valign=\"top\"><td style=\"padding: 0px;\" align=\"center\" width=\"75\"><div style=\"overflow: hidden; width: 75px; height: 75px;\"><img src=\"$avatar\" width=\"75\"></div></td><td>
<table class=\"main\"><tbody><tr><td class=\"embedded\" style=\"padding: 5px;\" width=\"80%\"><a href=\"account-details.php?id=$arr[hlidacid]\"><b>$arr1[username]</b></a> ($class)<br><br>Ratio: <b>".round($arr1['uploaded']/$arr1['downloaded'], 2)."</b><br>Naposledy přihlášen $arr1[last_access]<br>&nbsp;</td>
<td class=\"embedded\" style=\"padding: 5px;\" width=\"20%\"><br><a href=\"takedelhlidac.php?delid=$arr[hlidacid]\">Smazat</a><br><br><a href=\"account-inbox.php?receiver=$fname\">Poslat PM</a></td></tr>
</tbody></table></td></tr></tbody></table></td></tr></tbody></table>";

if ($i == "1") {
echo $content1;
$i = "2";
}else {
echo $content2;
$i = "1";
}

}

if ($i == "2") {
echo "<td class=\"bottom\" width=\"50%\">&nbsp;</td></tr></tbody></table>";


Řádek 41 je tento -
<table class=\"main\"><tbody><tr><td class=\"embedded\" style=\"padding: 5px;\" width=\"80%\"><a href=\"account-details.php?id=$arr[hlidacid]\"><b>$arr1[username]</b></a> ($class)<br><br>Ratio: <b>".round($arr1['uploaded']/$arr1['downloaded'], 2)."</b>$lacc<br>&nbsp;</td>


Řádek 47 je tento -
<table class=\"main\"><tbody><tr><td class=\"embedded\" style=\"padding: 5px;\" width=\"80%\"><a href=\"account-details.php?id=$arr[hlidacid]\"><b>$arr1[username]</b></a> ($class)<br><br>Ratio: <b>".round($arr1['uploaded']/$arr1['downloaded'], 2)."</b><br>Naposledy přihlášen $arr1[last_access]<br>&nbsp;</td>
nightfish
Profil
Leni:
Mám podobný problém. Můžete mi poradit co s tím?
chyba při dělení nulou se odstraňuje pokaždé stejně - uprav si kód tak, abys nulou nedělila (tzn. buď přidat podmínku na nulovou hodnotu a nebo nějak zajistit, že proměnná nikdy nulovou hodnotu nenabude)
Leni
Profil *
nightfish:
Můžeš mi prosím napsat jak bych to měl upravit? Zkoušel jsem to různě podle té rady co je výše ale nějak se mi to nedaří. V tomhle se skoro nevyznám.
Majkl578
Profil
[#9] Leni
round($arr1['uploaded']/$arr1['downloaded'], 2)

nahradit za:
($arr1['downloaded'] ? round($arr1['uploaded'] / $arr1['downloaded'], 2) : 0)
Leni
Profil *
Parády díky moc. Hláška je pryč.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: