안녕하세요? for문 질문입니다.

안녕하세요? for문 질문입니다.

QA

안녕하세요? 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>부서명은 출력 안 하게 하구요.

답변을 작성하시기 전에 로그인 해주세요.
전체 123,528 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT