2013-08-03 4 views
-3

Я хочу сгенерировать таблицу html с данными из sql. Я могу сделать это до сих пор.Горизонтальная вертикальная таблица по дате

<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 и повторно организовать их после, вы можете сделать это с помощью циклов. Проверьте код, только вы можете его протестировать, но я могу помочь больше, если у вас есть проблемы.

Я также сделал демо-версию 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

Я пробовал ваше предложение, но в конце 1-го дня на новом td на втором столбце. Остальное все еще находится в 1-й колонке. – SyamAhmad

+0

@SyamAhmad, я повторил свой ответ. Дайте мне знать, если вы это понимаете. – Sergio