2013-08-03 18 views
-3

SQL에서 데이터로 html 테이블을 생성하고 싶습니다. 지금까지이 작업을 수행 할 수있었습니다.날짜 별 가로 대 세로 테이블 그룹

<div class="row-fluid"> 
    <!-- BEGIN EXAMPLE TABLE PORTLET--> 
    <div class="portlet box blue"> 
     <div class="portlet-title"> 
      <div class="caption"> 
       <i class="icon-edit"></i>Attendance 
      </div> 
     </div> 
     <div class="portlet-body"> 
      <div class="clearfix"> 
      </div> 
      <?php echo "<form id='insertAtt' action='insertAtt2.php' method='post'> 
      " ?> 
      <table class="table table-striped table-hover table-bordered" id="studAtt"> 
      <tbody> 
      <?php 
$result = mysqli_query($con," SELECT date,t1.studID,studName,Class,attendance FROM mate_student as t1, mate_student_att as t2 WHERE t1.studID=t2.studID ORDER BY date"); 
         $date = ''; 
$att = ''; 
$prevDate=''; 
    while($row = mysqli_fetch_assoc($result)){ 
    $curDate= '<td> 
      '.$row['date'].' 
     </td> 
     '; $att= ' 
     <tr> 
      <td> 
       '.$row['attendance'].' 
      </td> 
     </tr> 
     '; if($curDate!=$prevDate) {echo $curDate; } echo $att; $prevDate=$curDate; } ?> 
    </div> 
    <!-- END EXAMPLE TABLE PORTLET--> 
</div> 
</div> 
<!-- END PAGE CONTENT --> 
</div> 
<!-- END PAGE CONTAINER--> 
</div> 

다음과 같이 나왔습니다.

|2013-08-17| 
|yes  | 
|no  | 
|yes  | 
|yes  | 
|no  | 
|2013-08-18| 
|no  | 
|no  | 
|yes  | 
|yes  | 
|no  | 

각 날짜가 새로운 열이되도록 인쇄하는 방법을 알아 내려고하고 있습니다.

|2013-08-17|2013-08-18| 
|yes  |no  | 
|no  |no  | 
|yes  |yes  | 
|yes  |yes  | 
|no  |no  | 

가능합니까? 어떻게해야합니까? 누군가 코드가 가로로 인쇄되는 것을 보았습니다. 그러나 이런 것은 아닙니다. 나는 그것이 내가 잘하지 못하는 논리에 관한 모든 것을 알고있다. 여기 나는 <td><tr> 조합으로 테이블 머리글로 날짜를 만드는 것을 시도해 왔습니다.

답변

0

질문을 처음으로 오해했습니다. 이제는 이해할 수 있습니다. 당신이 필요로하는 것은 다차원 배열을 SQL에서 출력하고 다차원 배열을 작성한 후 for 루프를 사용하여 수행 할 수 있습니다. 아래의 코드를 확인하십시오. 테스트 만 가능하지만 문제가 있으면 더 많은 도움을 줄 수 있습니다.

데미지도 here으로 만들었습니다. SQL 데이터가 없기 때문에 다시 값을 사용했습니다. 이 코드는 게시 한 날짜가 아닌 여러 날짜에 적용됩니다. 데모를 실행하려면 F9 키를 누릅니다.

<div class="row-fluid"> 
    <!-- BEGIN EXAMPLE TABLE PORTLET--> 
    <div class="portlet box blue"> 
     <div class="portlet-title"> 
      <div class="caption"> 
       <i class="icon-edit"></i>Attendance 
      </div> 
     </div> 
     <div class="portlet-body"> 
      <div class="clearfix"> 
      </div> 
      <?php echo "<form id='insertAtt' action='insertAtt2.php' method='post'>" ?> 
      <table class="table table-striped table-hover table-bordered" id="studAtt"> 
      <tbody> 
      <?php 
       $result = mysqli_query($con," SELECT date,t1.studID,studName,Class,attendance FROM mate_student as t1, mate_student_att as t2 WHERE t1.studID=t2.studID ORDER BY date"); 
             $date = ''; 
       $att = ''; 
       $prevDate=''; 
       $tbi = -1; 
       $table_array = array(); 
       while($row = mysqli_fetch_assoc($result)){ 

        $curDate= '<td> 
          '.$row['date'].' 
         </td> 
         '; 
        $att.= ', 
         <tr> 
          <td> 
           '.$row['attendance'].' 
          </td> 
         </tr> 
         '; 
        if($curDate!=$prevDate) { 
         $tbi++; 
         $table_array[$tbi][]= $curDate; 
        } 
        $table_array[$tbi][] = $att; 
       } 
          $trow=''; 
       for ($x = 0; $x < count($table[0]); $x++) { 

        $trow.='<tr>'; 
        for ($ti = 0; $ti < count($table); $ti++) { 
         $trow.='<td>'.$table[$ti][$x].'</td>'; 
        } 
        $trow.='</tr>'; 

       } 
       echo $trow; 
      ?> 
     </tbody> 
     </table> 
    </div> 
    <!-- END EXAMPLE TABLE PORTLET--> 
</div> 
</div> 
<!-- END PAGE CONTENT --> 
</div> 
<!-- END PAGE CONTAINER--> 
</div> 
+0

나는 당신의 제안을 시도했지만 두 번째 칼럼의 새로운 td에 첫 번째 날짜가 끝납니다. 나머지는 여전히 1 열에 있습니다. – SyamAhmad

+0

@SyamAhmad, 제 대답을 다시했습니다. 네가 이해한다면 나 한테 알려줘. – Sergio