테스트 사이트 - 개발 중인 베타 버전입니다

Division by zero 오류 채택완료

최지석 7년 전 조회 2,037

qstock 설치중 발생한 오류인데

Warning: Division by zero in ... 이라고뜨는데

변수중 0으로 나눌수 없어서 뜨는 오류같은데 예외처리를 어디부분에서 해야될까요??

소스는 아래와같습니다.

</p>

<p><?

if (!defined("_QSTOCK_") || !defined("_GNUBOARD_")) exit;</p>

<p>$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);</p>

<p>$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);</p>

<p>$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);</p>

<p>$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);</p>

<p>$sql = " select * from q_stock_news order by qst_ne_id desc limit 6 ";

$market_arr = sql_query($sql);</p>

<p>$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);</p>

<p>$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];

?></p>

<p><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></p>

<p><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></p>

<p><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]);</p>

<p>                    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></p>

<p><?

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;

}</p>

<p>function gapprint($datetime) {

    global $g4;</p>

<p>    $gap = $g4['server_time'] - strtotime($datetime);</p>

<p>    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)."일 전";</p>

<p>    return $gap;

}

?>

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
플래토
7년 전

8번라인과

</p>

<p>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;

}</p>

<p>

 

여기서

나눗셈을 할때 나오겠네요

 

다음과 같이 변경해보세요

 

</p>

<p>function gapprint($datetime) {

    global $g4;

    $gap = $g4['server_time'] - strtotime($datetime);</p>

<p>    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;</p>

<p>    }</p>

<p>    else return 0;

}</p>

<p>

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

해피정
7년 전

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

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

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인