테이블 rowspan 형태로 데이터 출력하기
페이지 정보
작성자 서방님 댓글 0건 조회 139회 작성일 13-11-13 13:55본문
<?
$row[0] = array(test, 20110321, 1, 내용, 기타);
$row[1] = array(test, 20110321, 2, 내용, );
$row[2] = array(test, 20110321, 3, 내용, );
$row[3] = array(tester, 20110322, 4, 내용, );
$row[4] = array(tester, 20110322, 5, 내용, );
$row[5] = array(test, 20110322, 6, 내용, );
$row[6] = array(test, 20110322, 7, 내용, );
for ($L=0; $L<7; $L++) {
$param[$row["$L"]["0"]][] = array(
"code" => $row["$L"]["1"],
"idx" => $row["$L"]["2"],
"id" => $row["$L"]["0"],
"content" => $row["$L"]["3"],
"other" => $row["$L"]["4"]
);
}
?>
<table width="800" border="0" cellpadding="10" cellspacing="1" bgcolor="#DDDDDD">
<?
if ($param != "") {
foreach($param as $key => $value) {
$rowspan = count($value);
for($i=0; $i<=$rowspan; $i++) {
if ( $i != $rowspan) {
if (!$i) {
?>
<tr bgcolor="#FFFFFF">
<td rowspan="<?=$rowspan?>"><?=$key?>(<?=$rowspan?>개)</td>
<td><?=$value[$i]["code"]?></td>
<td><?=$value[$i]["idx"]?></td>
<td><?=$value[$i]["content"]?></td>
<td><?=$value[$i]["other"]?></td>
</tr>
<?
}
else {
?>
<tr bgcolor="#FFFFFF">
<td><?=$value[$i]["code"]?></td>
<td><?=$value[$i]["idx"]?></td>
<td><?=$value[$i]["content"]?></td>
<td><?=$value[$i]["other"]?></td>
</tr>
<?
}
}
}
}
}
?>
</table>
위의 소스를 실행하면 표 1번과 같이 출력됩니다.
그걸 아래 표 2번과 같이 표현하고자 합니다.
변경되는 부분은 빨강색으로 표시하겠습니다.
foreach문을 중첩으로 사용하면 될듯하여 여러차례시도해 보았지만... 답을 찾지 못하여 이렇게 지식인에 질문을 올립니다.
<표 1번>
test(5개) | 20110321 | 1 | 내용 | 기타 |
20110321 | 2 | 내용 | ||
20110321 | 3 | 내용 | ||
20110322 | 6 | 내용 | ||
20110322 | 7 | 내용 | ||
tester(2개) | 20110322 | 4 | 내용 | |
20110322 | 5 | 내용 |
<표 2번>
test(2개) | 20110321 | 1 | 내용 | 기타 |
2 | 내용 | |||
3 | 내용 | |||
20110322 | 6 | 내용 | ||
7 | 내용 | |||
tester(1개) | 20110322 | 4 | 내용 | |
5 | 내용 |
test(2개) 에서 2개는 우측의 20110321, 20110322 를 뜻합니다.
그리고 2번째칸도 1번째칸과 같이 같은 내용이라면 칸을 합쳐 하나로 표시하고자 합니다.
끝까지 읽어주셔서 감사하고요~~
즐거운 하루되세요~
==========================================================================================
2011-03-26 답변작성
==========================================================================================
<?
$row[0] = array(test, 20110321, 1, 내용, 기타);
$row[1] = array(test, 20110321, 2, 내용, );
$row[2] = array(test, 20110321, 3, 내용, );
$row[3] = array(tester, 20110322, 4, 내용, );
$row[4] = array(tester, 20110322, 5, 내용, );
$row[5] = array(test, 20110322, 6, 내용, );
$row[6] = array(test, 20110322, 7, 내용, );
for ($L=0; $L<7; $L++) {
$param[ $row[$L][0] ][ $row[$L][1] ][] = array($row[$L][2], $row[$L][3], $row[$L][4]);
}
foreach($param as $key => $value) {
//test, tester의 날짜 갯수
$cnt = count($param[$key]);
//test(2), tester(1)
$date_cnt[$key] = $cnt;
foreach($param[$key] as $key2 => $value) {
//20110321, 20110322 내용 갯수
$cnt2 = count($param[$key][$key2]);
//test-20110321(3), test-20110322(2), tester-20110322(2)
$memo_cnt[$key][$key2] = $cnt2;
//1번째 필드 rowspan값
$rowspan[$key] += $cnt2;
//2번째 필드 rowspan값
$rowspan2[$key][$key2] += $cnt2;
//전체 레코드
$total_record += $cnt2;
}//foreach
}//foreach
echo '<table width="800" border="0" cellpadding="10" cellspacing="1" bgcolor="#DDDDDD">';
$i = $j = 0;
foreach($param as $key => $val) {
$i = $rowspan[$key];
foreach($param[$key] as $key2 => $val2) {
$j = $rowspan2[$key][$key2];
foreach($param[$key][$key2] as $key3 => $val3) {
echo '<tr bgcolor="#FFFFFF">';
//첫번째 필드
if($i == $rowspan[$key]) echo "<td rowspan='{$rowspan[$key]}'>$key({$rowspan[$key]}개)</td>";
//두번째 필드
if($j == $rowspan2[$key][$key2]) echo "<td rowspan='{$rowspan2[$key][$key2]}'>$key2</td>";
//나머지 필드
foreach($param[$key][$key2][$key3] as $k => $v) echo "<td>$v</td>";
echo '</tr>';
$i--;
$j--;
}//foreach
}//foreach
}//foreach
echo '</table>';
?>
댓글목록
등록된 댓글이 없습니다.