결산보고서를 자동으로 출력하고 싶은데... 정보
결산보고서를 자동으로 출력하고 싶은데...본문
그누보드의 스킨으로 장부를 만들고 있는데 잘 안되네요.
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 | 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 |
+-------+-------+-------+-------+-------+-------+-------+-------+-------+
| 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>
<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개) 숫자만큼 앞에서 부터 보여 줌.
두번째, 여섯번째 셀에 값이 없고 다른 셀은 값이 채워지기를 기대했는데
첫번째 셀에 ca=1의 합계값이 보여진 후 7개의 셀에 '-'가 채워지고
다시 ca_3의 합계값이 보여지고 다시 7개의 셀에 '-'가 채워...
그렇게 group by한 ca값 (5개) 숫자만큼 앞에서 부터 보여 줌.
* 웹에 보여주고 싶은 화면 처럼 하려면 소스를 어케 고쳐야 하나요?
초짜가 혼자 어케 해결해 보려고 하다가 시간만 하세월...
고수님들의 one point lesson을 부탁드립니다.
초짜가 혼자 어케 해결해 보려고 하다가 시간만 하세월...
고수님들의 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>";
}
?>
잘 살펴 보시면 이해가 가실 거에요.
<?
$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>";
}
?>