안녕하세요? for문 질문입니다.
본문
안녕하세요.
조직도 관리 시스템을 만들고 있습니다.
테이블을 만들어서 데이터를 가져오려고 하는데,
for문을 돌리니 부서명이 당연히 아래처럼 나오고있는데요.
경영지원팀 aaa
경영지원팀 bbb
경영지원팀 ccc
이걸
aaa
경영지원팀 bbb
ccc
같은 부서면 1번만 출력되게하고 rowspan을 해당 num_rows 수 만큼 만들고자합니다.
<?php
$sql = "SELECT * FROM g5_or_detail where gr_id = '2' order by or_order asc";
$result = sql_query($sql);
$row = sql_num_rows($result);
for ($i=1; $row = sql_fetch_array($result); $i++){
?>
<tr>
<!-- 부서명 부분 -->
<td rowspan="<?php echo $row ?>" class="belong line_no_left"><?php echo $row['or_belong'] ?></td>
<!-- 부서명 부분 -->
<td class="spot align_c"><?php echo $row['or_spot'] ?></td>
<td class="name align_c"><?php echo $row['or_name'] ?></td>
<td class="tel align_c"><?php echo $row['or_tel'] ?></td>
<td class="job"><?php echo $row['or_job'] ?></td>
<td class="mail line_no_right"><?php echo $row['or_email'] ?></td>
</tr>
<?php } ?>
위는 현재 작성한 코드이고 색칠된 부분이 부서명인데 각 부서명은 1번씩만 출력되도록 만들고싶습니다.
조언 부탁드립니다.
!-->답변 4
이렇게 해보세요~
<?php
$sql = "SELECT * FROM g5_or_detail where gr_id = '2' order by or_order asc";
$result = sql_query($sql);
$row = sql_num_rows($result);
while($row = sql_fetch_array($result)) {
$list[$row['or_belong']][] = $row;
};
foreach($list as $or_belong=>$data){
for($i=0; $i<count($data); $i++){
?>
<tr>
<?php if($i == 0){ ?>
<!-- 부서명 부분 -->
<td rowspan="<?php echo count($data) ?>" class="belong line_no_left"><?php echo $or_belong ?></td>
<!-- 부서명 부분 -->
<?php } ?>
<td class="spot align_c"><?php echo $data[$i]['or_spot'] ?></td>
<td class="name align_c"><?php echo $data[$i]['or_name'] ?></td>
<td class="tel align_c"><?php echo $data[$i]['or_tel'] ?></td>
<td class="job"><?php echo $data[$i]['or_job'] ?></td>
<td class="mail line_no_right"><?php echo $data[$i]['or_email'] ?></td>
</tr>
<?php }} ?>
해당 처럼 하지마시고 각 부분 마다 $html['경영지원']['내용'] .= "<tr><td>~~" 식으로 하시고
$html['경영지원']['카운트'] = 1 해서 저장을 해두시고
다시 돌리시면서 아래 짜두신 디자인을 진행하셔야 할거 같습니다.
음...저라면 우선 sql문의 order를 or_belong을 주고
for문에서 or_belong값이 새로운 값일 경우 td rowspan을 실행하고
tr을 카운트하여
javascript구간에서 rowspan값을 넣어주면 되지 않을까 싶네요..
(SELECT or_belong,count(*) size FROM g5_or_detail where gr_id = '2' group by or_belong ) A
inner join
g5_or_detail B A.or_belong=B.or_belong where ...
이렇게 하면 같은 부서명으로 row가 몇 개 있는지 알 수 있으니까
rowspan으로 사용할 수 있을 겁니다.
loop에서 부서명이 같으면 <td>부서명은 출력 안 하게 하구요.
답변을 작성하시기 전에 로그인 해주세요.