회원 포인트를 계정별 부분합으로 보여주기 관련 질문 > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

회원 포인트를 계정별 부분합으로 보여주기 관련 질문 정보

회원 포인트를 계정별 부분합으로 보여주기 관련 질문

본문

회원 보유 포인트를 포인트 계정과목 별 부분합을 계산해서 페이지에 보여 주는 프로그램을 만들어 봤습니다. 그런데 화면에 정상적으로 나타나지 않는데 에러 부분을 지적해 주시면 감사하겠습니다.

참고로 저는 point테이블(mysql)의 po_rel_action을 '계정과목'으로 사용하고 있습니다.

부분합 함수 return 값을 받는 부분과  이를 이중 배열 변수로 받은 것, 리스트를 만드는 반복문을 눈여겨 봐주세요. 여기서 무슨 에러를 낸 듯해서요.


우선 point 부분합을 내는 함수
// 개인 계정별 재산 읽어오기
function get_point_byacct($mb_id, $opt='')
{
      if ($opt == 1) //수입
      {
$add = " and po_point > 0 ";
      }
    if ($opt == -1) //지출
    {
$add = " and po_point < 0 ";
    }

    $sql = "select sum(po_point) as sum, count(po_point) as cnt, po_rel_action as acct
from g4_point where mb_id = '$mb_id'
                            $add
            group by po_rel_action
            order by sum desc ";
        $row = sql_fetch($sql);

        return $row;
}

다음은 page에서 목록을 뿌려주는 스킨 화일에서

<tr>
    <td width="30" height="25" align="center"><img src="<?=$member_skin_path?>/img/arrow_01.gif" width="7" height="5"></td>
    <td>재산</td><td><a href="#" onclick="acc_open();">순자산액 <?=display_point($mb[mb_point])?>,000</a>&nbsp;&nbsp;
<!-- <? if($member[mb_id] == $mb[mb_id]) { ?> -->
          <span style="font-size:10px;color:#666666;">*계정과목을 클릭하면 자세한 내용이 나옵니다.</span>
            <div id="acc_view" style="display:none;height:auto;margin-top:5px;">
              <style>
              .header { font-weight:bold; background: #efefef;}
              .title { font-weight:normal; background: #ffffff; text-align:center;}
              .amount { text-align:right; margin-right:15px;}
              </style>
                    <table border="0" cellpadding="5" cellspacing="1" bgcolor="#cccccc" width="98%" class="amount">
                    <tr bgcolor="#ffffff" class="header" align="center">
              <td width="20%" rowspan='2'>계정과목</td>
        <td width="30%" colspan='2'>수 입</td>
        <td width="30%" colspan='2'>지 출</td>
        <td width="20%" rowspan='2'>잔 액<br>금액(v천)</td>
    </tr>
    <tr bgcolor="#ffffff" class="header" align="center">
          <td width="10%">건수</td>
          <td width="20%">금액(v천)</td>
          <td width="10%">건수</td>
          <td width="20%">금액(v천)</td>
    </tr>
<?
$income_all = get_point_sum($mb[mb_id], '1');
$expense_all = get_point_sum($mb[mb_id], '-1');
$balance_all = $income_all + $expense_all;

$income = get_point_byacct($mb[mb_id], '1');
$expense = get_point_byacct($mb[mb_id], '-1');
$balance =  get_point_byacct($mb[mb_id]);

for ($i=0; $i < count($income[sum]); $i++) {
?>
<tr bgcolor="#ffffff" align="center">
        <td width="20%"><?=$income[acct][$i]?></td>
      <td width="10%"><?=$income[cnt][$i]?></td>
      <td width="20%"><?=$income[sum][$i]?></td>
      <td width="10%"><?=$expense[cnt][$i]?></td>
      <td width="20%"><?=$expense[sum][$i]?></td>
      <td width="20%"><?=$balance[sum][$i]?></td>
</tr>
<? } ?>
<tr bgcolor="#ffffff" align="center">
                      <td width="20%">합  계</td>
        <td width="10%"></td>
        <td width="20%"><?=number_format($income_all)?></td>
        <td width="10%"></td>
        <td width="20%"><?=number_format($expense_all)?></td>
        <td width="20%"><?=number_format($balance_all)?></td>
</tr>
              </table>
          </div>
<!-- <? } ?> -->
    </td>
</tr>
참고로 해당 홈페이지는 아래 링크를 달아 놓았습니다.

댓글 전체

답변 감사합니다.  총합을 구하는 함수 get_point_sum()에서는 returm $row[sum]으로 이미 하고 있습니다.

부분합 구하는 함수 get_point_byacct()를 하나 더 만들어 놓고 여기서 return $row라고만 한 이유는 $row[sum], $row[cnt],$row[acct]를 한번에 다 써 먹을려는 의도에서 그리 해 본 것입니다.    (그런데 이게 욕심인가...)
즉 리스트는 $row[acct][$i], $row[cnt][$i], $row[sum][$i],  뮈 이런 식으로요.
return $row;로 받아서 $row[sum], $row[cnt], $row[acct] 세개로 한꺼번에 써먹는 방법이 없다면 함수를 세게 만들어 [예를 들어 get_sum_byacct(), get_cnt_byacct(), get_eachacct()]를 만들고 각각의 return 값으로 위의 세개를 받는 방식으로 해 봐야 할 것 같은데 그 방법밖에는 없는가요?
전체 27 |RSS
그누4 질문답변 내용 검색

회원로그인

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