Division by zero 오류
본문
qstock 설치중 발생한 오류인데
Warning: Division by zero in ... 이라고뜨는데
변수중 0으로 나눌수 없어서 뜨는 오류같은데 예외처리를 어디부분에서 해야될까요??
소스는 아래와같습니다.
<?
if (!defined("_QSTOCK_") || !defined("_GNUBOARD_")) exit;
$sql = " select * from q_stock ";
$row = sql_fetch($sql);
$stockindex = $row[qst_index];
$stockindexyesterday = $row[qst_index_yesterday];
$stockindexgap = $row[qst_index]-$row[qst_index_yesterday];
$stockindexgapper = (($stockindexgap/$row[qst_index_yesterday])*100);
$sql = " select qst_company, qst_vol_sell + qst_vol_buy as qst_vol ";
$sql.= " from q_stock_list ";
$sql.= " order by qst_vol_sell + qst_vol_buy desc ";
$sql.= " limit 7 ";
$rank_vol = sql_query($sql);
$sql = " select qst_company, round(((qst_today / qst_yesterday)-1)*100, 2) as qst_up ";
$sql.= " from q_stock_list ";
$sql.= " order by qst_today / qst_yesterday desc ";
$sql.= " limit 7 ";
$rank_up = sql_query($sql);
$sql = " select qst_company, round(((qst_today / qst_yesterday)-1)*100, 2) as qst_down ";
$sql.= " from q_stock_list ";
$sql.= " order by qst_today / qst_yesterday asc ";
$sql.= " limit 7 ";
$rank_down = sql_query($sql);
$sql = " select * from q_stock_news order by qst_ne_id desc limit 6 ";
$market_arr = sql_query($sql);
$sql = " select a.qst_code, a.qst_tradenum, a.qst_proc, a.qst_datetime, b.qst_company from q_stock_trade a inner join q_stock_list b on a.qst_code = b.qst_code order by a.qst_tr_id desc limit 6 ";
$trade_arr = sql_query($sql);
$sql = " select sum(qst_tradenum) as total_vol, ";
$sql.= " sum(qst_tradenum * qst_price) as total_price ";
$sql.= " from q_stock_trade ";
$sql.= " where substring(qst_datetime, 1, 10) = '$g4[time_ymd]' ";
$row = sql_fetch($sql);
$total_vol = $row[total_vol];
$total_price = $row[total_price];
?>
<div id="newsHead">
<div class="left">
<span class="index"><?=number_format($stockindex, 2)?></span>
<span class="gap"><?=updown($stockindexgap)?> <?=updownper($stockindexgapper)?></span>
</div>
<div class="right">
<span class="content">거래량 <?=number_format($total_vol)?> |  거래금액 <?=number_format($total_price)?></span>
</div>
<div class="clear"></div>
</div>
<div class="newsrank">
<div class="column1">
<div>
<h4>거래량 상위종목</h4>
<ul>
<?
for ($i=1; $tmp = sql_fetch_array($rank_vol); $i++) {
echo "<li>";
echo "<span class='num'>{$i}.</span>";
echo "<span class='name'>{$tmp[qst_company]}</span>";
echo "<span class='value'>".number_format($tmp[qst_vol])."</span>";
echo "<div class='clear'></div></li>";
}
?>
</ul>
</div>
</div>
<div class="column2">
<div>
<h4>상승률 상위종목</h4>
<ul>
<?
for ($i=1; $tmp = sql_fetch_array($rank_up); $i++) {
echo "<li>";
echo "<span class='num'>{$i}.</span>";
echo "<span class='name'>{$tmp[qst_company]}</span>";
echo "<span class='value'>".updownper($tmp[qst_up])."</span>";
echo "<div class='clear'></div></li>";
}
?>
</ul>
</div>
</div>
<div class="column3">
<div>
<h4>하락률 상위종목</h4>
<ul>
<?
for ($i=1; $tmp = sql_fetch_array($rank_down); $i++) {
echo "<li>";
echo "<span class='num'>{$i}.</span>";
echo "<span class='name'>{$tmp[qst_company]}</span>";
echo "<span class='value'>".updownper($tmp[qst_down])."</span>";
echo "<div class='clear'></div></li>";
}
?>
</ul>
</div>
</div>
<div class="clear"></div>
</div>
<div class="newsmarket">
<div class="column1">
<div>
<h4>증시 소식</h4>
<ul>
<?
for ($i=0; $tmp = sql_fetch_array($market_arr); $i++) {
$tmp[qst_datetime] = gapprint($tmp[qst_datetime]);
echo "<li>";
echo "<span class='msg'>{$tmp[qst_msg]}</span>";
echo "<span class='time'>{$tmp[qst_datetime]}</span>";
echo "<div class='clear'></div></li>";
}
?>
</ul>
</div>
</div>
<div class="column2">
<div>
<h4>거래 소식</h4>
<ul>
<?
for ($i=0; $tmp = sql_fetch_array($trade_arr); $i++) {
if ($tmp[qst_proc] == "buy") {
$proc = "매수";
}
else {
$proc = "매도";
}
$tmp[qst_datetime] = gapprint($tmp[qst_datetime]);
echo "<li>";
echo "<span class='msg'>{$tmp[qst_company]}({$tmp[qst_code]}) - {$tmp[qst_tradenum]}주 {$proc}</span>";
echo "<span class='time'>{$tmp[qst_datetime]}</span>";
echo "<div class='clear'></div></li>";
}
?>
</ul>
</div>
</div>
<div class="clear"></div>
</div>
<?
function updown($num) {
if ($num < 0)
{
$num = "<font color='#005dde'>▼".number_format(-$num, 2)."</font>";
}
else if ($num > 0)
{
$num = "<font color='#d90400'>▲".number_format($num, 2)."</font>";
}
else
{
$num = "<font color=green>-</font>";
}
return $num;
}
function updownper($num) {
if ($num < 0)
{
$num = "<font color='#005dde'>".number_format($num, 2)."%</font>";
}
else if ($num > 0)
{
$num = "<font color='#d90400'>+".number_format($num, 2)."%</font>";
}
else
{
$num = "<font color=green>0</font>";
}
return $num;
}
function gapprint($datetime) {
global $g4;
$gap = $g4['server_time'] - strtotime($datetime);
if (floor($gap/60)<1)
$gap = $gap."초 전";
else if (floor($gap/3600)<1)
$gap = floor($gap/60)."분 전";
else if (floor($gap/86400)<1)
$gap = floor($gap/3600)."시간 전";
else
$gap = floor($gap/86400)."일 전";
return $gap;
}
?>
답변 2
8번라인과
function gapprint($datetime) {
global $g4;
$gap = $g4['server_time'] - strtotime($datetime);
if (floor($gap/60)<1)
$gap = $gap."초 전";
else if (floor($gap/3600)<1)
$gap = floor($gap/60)."분 전";
else if (floor($gap/86400)<1)
$gap = floor($gap/3600)."시간 전";
else
$gap = floor($gap/86400)."일 전";
return $gap;
}
여기서
나눗셈을 할때 나오겠네요
다음과 같이 변경해보세요
function gapprint($datetime) {
global $g4;
$gap = $g4['server_time'] - strtotime($datetime);
if ($gap) {
if (floor($gap/60)<1)
$gap = $gap."초 전";
else if (floor($gap/3600)<1)
$gap = floor($gap/60)."분 전";
else if (floor($gap/86400)<1)
$gap = floor($gap/3600)."시간 전";
else
$gap = floor($gap/86400)."일 전";
return $gap;
}
else return 0;
}
보통 설치후 기본값이 누락된 경우 발생하기도 합니다.
소스 말고, 설치후 환경설정 뭐 그런거 화면에 빈칸은 없는지 살펴보세요
답변을 작성하시기 전에 로그인 해주세요.