Division by zero 오류

Division by zero 오류

QA

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)?>  |&nbsp 거래금액 <?=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;
}

보통 설치후 기본값이 누락된 경우 발생하기도 합니다.

소스 말고, 설치후 환경설정 뭐 그런거 화면에 빈칸은 없는지 살펴보세요

답변을 작성하시기 전에 로그인 해주세요.
전체 19
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT