테이블 rowspan 형태로 데이터 출력하기 > php

본문 바로가기
사이트 내 전체검색

php

테이블 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>';

?>

댓글목록

등록된 댓글이 없습니다.

Total 612건 24 페이지
게시물 검색

회원로그인

접속자집계

오늘
242
어제
225
최대
1,347
전체
155,001
Latest Crypto Fear & Greed Index

그누보드5
Copyright © 서방님.kr All rights reserved.