2016-01-21 4 views
-2

привет :) Я борюсь в создании таблиц, и здесь не моя проблемаPHP HTML TABLE: PIVOT

Во-первых: Я пытаюсь скопировать этот документ

enter image description here

Но у меня нет Идея для ее достижения :(

И это снимок экрана моего стола

enter image description here

Хорошо первое имя студентов должно быть слияние как отдельные

2-й даты, которые есть (21, 22, 23) должны стать колонны, как и первой картинке выше и замечания будут размещены ниже дат, если студент либо присутствует, либо отсутствует

вот мой код до сих пор :(

<table class="table table-bordered table-condensed" align="center" bordercolor="#CCCCCC"> 
          <tr bgcolor="#009933"> 
          <td align="center" style="color:#FFF;">Name</td> 
          <td align="center" style="color:#FFF;">Date</td> 
          <td align="center" style="color:#FFF;">Remark</td> 
          </tr> 
          <?php 
          $queryres = mysql_query("SELECT * FROM tb_attendance WHERE instructor_id = '$inst_id' AND description = '$desc'"); 
          while($result= mysql_fetch_array($queryres)){ 
           echo "<tr>"; 
           echo "<td class=\"text-center\">".$result['stud_name']."</td>"; 
           echo "<td class=\"text-center\">".$result['date']."</td>"; 
           echo "<td class=\"text-center\">".$result['remark']."</td>"; 
          } 
          ?> 
         </table> 

Спасибо заранее

ответ

1

Чтобы создать таблицу, как, что вы должны использовать MySQL CASE(), который позволяет преобразовывать строки в столбцы.

Select student_name, case 
    when date=1 then count(remark) as day_1 
    when date=2 then count(remark) as day_2 
    when date=3 then count(remark) as day_3 
    . 
    . 
    . 
    when day=30 then count(remark) as day_30 
    end case from table_name where intsructor_id='' 

Чтобы развернуть на столе, поймать Rowset и цикл массива над HTML таблицы или дивы

<table> 
<?php 
foreach($query_students as $data) { 
    echo "<tr><td>".$data[0]."</td>"; 
    for ($i=1; $i<=30; $i++) { 
     echo "<td>".$data[$i]."</td>" 
    } 
    echo "</tr>"; 
} 
?> 
</table> 

Не используйте mysql_fetch является устаревшим и небезопасным, как ад. Используйте вместо этого ORM или используйте PDO, MYSQLI. Для целей дезинфекции используйте ПОДГОТОВЛЕННЫЕ ЗАЯВЛЕНИЯ.

+0

Умм, хранимые процедуры абсолютно НЕ НИЧЕГО относятся к старым функциям mysql _ *() ... –

+0

Спасибо за ваш ответ, но вы можете уточнить подробности? coz Я не так хорош в этом :( – CallMeJeo

+0

Вы правы @MarcB, это ПОДГОТОВЛЕННЫЕ ЗАЯВЛЕНИЯ, спасибо, – datelligence