결산보고서를 자동으로 출력하고 싶은데... > 그누4 질문답변

그누4 질문답변

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

결산보고서를 자동으로 출력하고 싶은데... 정보

결산보고서를 자동으로 출력하고 싶은데...

본문

그누보드의 스킨으로 장부를 만들고 있는데 잘 안되네요.
 
php(4.4.1), mysql(3.23.58) 환경하에서 아래와 같이 하고 싶습니다.
 
- table 명 'abc'의 구조
+-------+------+------+
|  mon  |   ca   |   val  |
+-------+------+------+
|     1    |    1    |   100 |
+-------+------+------+
|     1    |    3    |   300 |
+-------+------+------+
|     1    |    3    |   300 |
+-------+------+------+
|     1    |    4    |   400 |
+-------+------+------+
|     1    |    4    |   400 |
+-------+------+------+
|     1    |    5    |   500 |
+-------+------+------+
|     1    |    5    |   500 |
+-------+------+------+
|     1    |    7    |   700 |
+-------+------+-------+
|   1   |   7   |  700  |
+-------+-------+-------+

- 웹에 보여주고 싶은 화면
+-------+-------+-------+-------+-------+-------+------+------- +-------+
|   mon  |     1    |     2    |     3    |     4    |     5   |     6    |     7    |  sum   |
+-------+-------+-------+-------+-------+-------+-------+-------+-------+
|     1     |    100  |     -    |    600  |    800  |    500 |     -    |   1400  |  3400  |
+-------+-------+-------+-------+-------+-------+-------+-------+-------+
- 제가 한 짓
<table border=1>
  <tr align=center>
    <td>month</td>
    <td>1</td>
    <td>2</td>
    <td>3</td>
    <td>4</td>
    <td>5</td>
    <td>6</td>
    <td>7</td>
  </tr>
  <tr>
    <td align=center>1</td>
    <?
      $sql= "select ca, sum(val) 'data' from abc where mon = '1' group by ca";
      $result = sql_query($sql)
     
      for ($i=0; $row=mysql_fetch_array($result); $i++) {
     
        for ($j=1; $j<8; $j++) {
          if ($row[ca] == $j) {
            echo "<td align=right>$row[data] </td>";
          } else {
            echo "<td align=center> - </td>";
          }
        }
      }
    ?>   
  </tr>
</table>
 
- 나타난 현상
  두번째, 여섯번째 셀에 값이 없고 다른 셀은 값이 채워지기를 기대했는데
  첫번째 셀에 ca=1의 합계값이 보여진 후 7개의 셀에 '-'가 채워지고
  다시 ca_3의 합계값이 보여지고 다시 7개의 셀에 '-'가 채워...
  그렇게 group by한 ca값 (5개) 숫자만큼 앞에서 부터 보여 줌.
 
* 웹에 보여주고 싶은 화면 처럼 하려면 소스를 어케 고쳐야 하나요?
   초짜가 혼자 어케 해결해 보려고 하다가 시간만 하세월...
   고수님들의 one point lesson을 부탁드립니다.
  • 복사

댓글 전체

이렇게 바꿔보세요.
잘 살펴 보시면 이해가 가실 거에요.

<?
      $sql= "select ca, sum(val) 'data' from abc where mon = '1' group by ca order by ca";
      $result = sql_query($sql);

      $row = mysql_fetch_array($result);

 
      for ($i=1; $i <= 7; $i++) {
       
              if($row[ca]==$i) {
                  echo "<td align=right>$row[data] </td>";
                  $row = mysql_fetch_array($result);
              }
            else echo "<td align=center> - </td>";
 
      }


?>
© SIRSOFT
현재 페이지 제일 처음으로