출력페이지 생성 질문~..두번째 > 그누4 질문답변

그누4 질문답변

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

출력페이지 생성 질문~..두번째 정보

출력페이지 생성 질문~..두번째

첨부파일

bankbook.zip (67.5K) 2회 다운로드 2012-04-26 14:23:56

본문

전진님이 가르쳐 주신걸  짜집기 한 경험(?)을 되 살려서 수정을 해봤는데 잘 안되네요..

for 문 저게 문제가 되는거 같은데.. 어찌 수정해야할지 모르겠네요..

아래는 수정한 소스의에요.. 한번 봐주시고 수정하여할 부분이 어디인지 지적 또는 알려주시면

복 받으실꺼에요..^^
<?
for ($i=0; $row=mysql_fetch_array($result); $i++)
{
$num = $rank + $i + 1;

  if($i % 30 == 0) {
$subpage  = $subpage + 1;

if($firstpage) {
echo "
            <tr> <td colspan=12> <h6 CLASS='break'>
기간 : [$fr_date~$to_date] Page $subpage/$printpage
                    </h6>  </td>  </tr>";
} else {
        echo"
            <tr>  <td colspan=12> <h6>
        기간 : [$fr_date~$to_date] Page $subpage/$printpage
</h6>  </td>  </tr>";
}

        $firstpage = 1;

echo "
<tr><td colspan=12 height=3 bgcolor=#0E87F9></td></tr>
    <tr align=center height=25>
        <td width=5%>번호</td>/
        <td width=10%>생활자명</td>
        <td align=right width=15%><font color=blue>총 입금액</font></td>
        <td align=right width=15%><font color=red>총 출금액</font></td>
        <td align=right width=15%>잔&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;액</td>
        <td align=right width=10%>소 속 동</td>
<td align=right width=1%></td>
    </tr>
    <tr><td colspan=12 height=1 bgcolor=#CCCCCC></td></tr>";
  }

    //$list = $i%2;
// $row[wr_1] = date("Y-m-d",strtotime($row[wr_1]));
 
      $name ="select wr_subject as list from g4_write_membership where (wr_2!='퇴소자') AND (ca_name='$wr_8')";
  $rowsum = sql_fetch("select sum(wr_3) as sum_in from $write_table where (group by $name['list']) AND (ca_name='입금') ");
  $rowsubtract = sql_fetch("select sum(wr_3) as subtract_in from $write_table where (group by $name['list']) AND (ca_name='출금') ");
      $row_tot = $rowsum['sum_in'] - $rowsubtract['subtract_in'];
 
        $row[wr_5] = number_format($row[wr_5]);
$sub_suip1 = number_format($sub_suip1);
    $sub_jich1 = number_format($sub_jich1);

    echo "
    <tr class='list$list center'>
        <td height=25 align=center>$num</td>
        <td align=center>$name[list]</td>
<td align=right><font color=blue>$rowsum['sum_in'] 원</font></td>
    <td align=right><font color=red> $rowsubtract['subtract_in'] 원</font></td>
        <td align=right>$row_tot 원</td>
<td align=right>$row[wr_8]</td>";
echo "
    </tr>
<tr><td colspan=12 height=1 bgcolor=#cccccc></td></tr>";
// 라인사이 공백
}

if ($i == 0) {
    echo "<tr><td colspan=12 align=center height=100 bgcolor=#ffffff><span class=point>자료가 한건도 없습니다.</span></td></tr>\n";
}
?>
  • 복사

댓글 전체

우선 눈에 띄는 부분부터.. ^^;
(wr_2!='퇴소자')  =>  (NOT wr_2 = '퇴소자')

where (group by $name['list']) AND (ca_name='입금')
아마도?==>
where ca_name='입금' group by $name['list']

음.. 우선 하시려는 일의 로직을, 위 소스로는 파악하기 힘드네요..
중간에 지정되지 않은 변수 ($wr_8) 도 사용하시고요..

하시려는 일과 현재 사용하시는 필드들 (예, wr_2 와 ca_name에 들어가는 내용 등), 사용하시는 게시판 (예. membership은 회원정보를, 다른 게시판에 입출금 정보) 등을 모른 상태에서는 조언을 드리기 힘들것 같네요. .^^;
답변 감사드립니다..^^

 $name ="select wr_subject as list from g4_write_membership where (wr_2!='퇴소자') AND (ca_name='$wr_8')";
// 위 부분은 회원관리테이블(멤버쉽) wr_subject  를 퇴소자 아니고 팝업창에서 입력받은 wr_8과 동일한 부분을 받아오는 부분 설정했구요...

  $rowsum = sql_fetch("select sum(wr_3) as sum_in from $write_table where (group by $name['list']) AND (ca_name='입금') ");
//입출금을 ca_name을 사용하여 wr_3 에 들어가게 처리가 되어 있어요.. 그래서 wr_3의 합계를 구하라 단 ca_name 입금이고 위 name 들어있는 사람 하나중에서.

  $rowsubtract = sql_fetch("select sum(wr_3) as subtract_in from $write_table where (group by $name['list']) AND (ca_name='출금') ");
// 입금과 동일하고요 출금만 바뀌었을뿐..

      $row_tot = $rowsum['sum_in'] - $rowsubtract['subtract_in'];
//요기는 입금 - 출금  = $row_tot

//wr_8 저희 시설 동구분에 지정 되어있거든요.. 사랑동 믿음동 봉사동 노인동 등등...
설명 감사합니다.

글쎄요.. $result를 저 소스 코드 전에 (디비에서) 준비해오지 않았다면 당연히 문제일텐데.. 그건 제가 잘 모르겠네요.. ^^;

음.. 그 for 루프에서 받은 $row 배열을 사용하는 곳이

$row[wr_1] : 아마 일자
$row[wr_5] : ??

일단, 제가 의미를 알 수없는 변수들을 제외하고,
중간의 sql 부분만 오류를 수정하면, 우선 해당 조건에 부합하는 회원이 여럿이 될테니

$sql_name ="select wr_subject as list from g4_write_membership where NOT wr_2='퇴소자' AND ca_name='$wr_8' ";
$res_name = sql_query($sql_name);
while( $name = mysql_fetch_array($res_name) {
  $rowsum = sql_fetch("select sum(wr_3) as sum_in from $write_table where mb_id=$name['list'] and ca_name='입금' ");  // membership 테이블의 wr_subject가 mb_id라고 가정할때,
  $rowsubtract = sql_fetch("select sum(wr_3) as subtract_in from $write_table where mb_id=$name['list'] and ca_name='출금' ");
  ...

//라인사이공백
}

으로 하시면 어떨까 합니다.
그런데, { 열고 다는게 개수가 안맞네요..  그래서 더 로직을 파악하기 힘든듯..
위 코드에서 사용하지 않는 변수들도 많고요.. ^^;

위 코드가 전부 인가요? 아님 일부인가요? 
전부라면 (지금처럼 고쳐도) 당연히 동작하지 않을것 같고요.
일부라면, 전체 코드를 알려주시면 문제를 잘 파악할 수 있지 않을까 합니다. ^^;
스킨을 통째로 올립니다. 출력페이지 하나로는 파악기 힘들거 같아서요..
아마 복잡할껍니다.

제가 질문드린 내용이 들어있는 파일명은 fr_and_to_date.php 파일입니다..
수정한은 스킨은 장돌뱅이님의 간편장부를 이용하여 편집한겁니다.

아참 그리고 멤머쉽테이블은 제가 회원가입테이블이 아닌 자체 생성한 멤버쉽 테이블입니다. wr_subject 필드를 이름으로 쓰고 있답니다.

wr_1 날짜
    2  계정
    3  입출금액
    4  계좌번호
    5  잔액
    6  $today
    7  $ca_name|$wr_3|$wr_4|$wr_5|$wr_6
    8  소속동
    9  년도
    10  년월
감사합니다.  첨부화일은 이제 삭제하셔되 되겠네요.

궁금증 1:
위에서 말씀하신 fr_and_to_date.php 화일이, 모든 거래?내역을 출력하는 화일인가요?
얼핏봐서는 다른 화일 (in_out_print.php) 이 모든 거래내역과 (회원별이 아닌 전체) 총합을 보여주고 인쇄하는 화일같네요.

그렇다면, fr_and_to_date.php의 맨위 sql부분에서 회원별로 grouping을 하는 것이 나을것 같은데요..

궁금증2:
위에서 얘기하신 membership 테이블에, 입출금 내역도 함께 들어있나요?

그렇다면, 제가 알려드린 sql에서 $write_table을 g4_write_membership  이나 g4_write_$bo_table 로 바꾸셔야 할듯 합니다.

정리

101줄위에
    $sql .= " and NOT wr_2='퇴소자' group by wr_subject ";
추가

(기존 화일의) 232-238 를 아래로 교체
    $sum = sql_fetch("select sum(wr_3) as sum_in from g4_write_$bo_table where wr_subject=$row['wr_subject'] and ca_name='입금' ");
    $subtract = sql_fetch("select sum(wr_3) as subtract_in from g4_write_$bo_table where wr_subject=$row['wr_subject'] and ca_name='출금' ");

(기존 화일의) 247-249 를 아래로 교체
    <td style='text-align: right;'><font color=blue>".number_format($sum[sum_in])."</font></td>
    <td style='text-align: right;'><font color=blue>".number_format($substract[subtract_in])."</font></td>
    <td style='text-align: right;'><font color=red>".number_format($sum[sum_in] -  $substract[subtract_in])."</font></td>
 
일단 지금 생각되는 것은 이 정도입니다. ^^
해보시고 문제가 있으면 알려주세요.
전진님 답변 감사드립니다..*^.^*

궁금증1이 대한 답변 :
        fr_and_to_date.php 파일은 개인별의 합계를 출력을 구현할려고 한거구요
       
궁금증2에 대한 답변 :
        멤버쉽 테이블에서는 저희 시설 입소자의 기본정보만 있구요..
        입출금에 관한 데이터는 하나도 없답니다.

리스트 출력하면에서는
 성명      입금액      출금액          잔액
개똥이      10              0              10
개똥이      10              0              20
말똥이      10              0              10
소똥이      0              20              -20
개똥이      0              10              10

 fr_and_to_date.php 파일은 아래와 같이...개인별 합계를
 성명    입금액    출금액        잔액
개똥이      20        10              10
소똥이      0        20              -20
말똥이    10        0              10


신경 많이 써 주셨는데 위 댓글의 내용을 실제로 적용을 시켜 보았지만 안되네요...ㅠ.ㅠ  제가 글 재주가 없어서 전진님께 내용을 잘못 전달한거 같네요...
음.. 괜히 제가 오기가 생기네요.. ^^;

답변 2번을 보니 입출금 내역이 들어있는 테이블이 다르네요?
그렇다면, 첫번째 sql의 디비는

$sql  = " select * from g4_write_membership ";

로 직접 지정해서 사용하셔야 하고요.

에러가 나는 부분은 아래 sql부분에 있었네요. 죄송.. ^^;

    $sum = sql_fetch("select sum(wr_3) as sum_in from g4_write_$bo_table where wr_subject='$row[wr_subject]' and ca_name='입금' ");
    $subtract = sql_fetch("select sum(wr_3) as subtract_in from g4_write_$bo_table where wr_subject='$row[wr_subject]' and ca_name='출금' ");

$row[wr_subject] 주변에 따옴표를 빼먹었습니다. ^^;

음.. 일단 제 실험에서는 정보는 없이 돌아가긴 하네요.. 한번만 더 시험해 보세요. ^^;
이제 더이상 답변을 달수가 없네요.. ㅠ.ㅠ 일단 답변 채택하여 드립니다. ㅠ.ㅠ

하지만 안되네요... 퇴근시간이 다 되어가서요... 낼 다시 해봐야할거 같네요...  고생하셨습니다.

전진님...*^.^*  좋은 저녁 시간 되세요...
네. 비누거품니도 좋은 시간 되세요.
참고로 제가 실험해서 내용없이 작동하는 코드는 메일로 보내드렸습니다. ^^
아.. 그리고 굳이 채택 안해주셔도 됩니다. 포인트도 이미 넘치구요.. ^^;
© SIRSOFT
현재 페이지 제일 처음으로