2013-09-28 3 views
2

снова нужна ваша помощь.Как вывести mysql-запрос в таблицу html?

У меня есть запрос с несколькими переменными, которые я должен выводить в таблицу.

Вот запрос:

SELECT DISTINCT 
      zi.zile, 
      ore.ora AS ore, 
      materii.materie 
     FROM 
      zi LEFT JOIN orar ON zi.id = orar.id_zi 
      LEFT JOIN ore ON ore.id = orar.id_ora 
      LEFT JOIN nume_scoli ON nume_scoli.id = orar.id_scoala 
      LEFT JOIN materii_pe_clase ON materii_pe_clase.id_scoala = nume_scoli.id 
      LEFT JOIN clase ON materii_pe_clase.id_clasa = clase.id AND orar.id_clasa = clase.id 
      LEFT JOIN elevi ON elevi.id_clasa = materii_pe_clase.id_clasa 
      LEFT JOIN materii ON materii.id = orar.id_materie 
       WHERE clase.`id`=1 

      ORDER BY zi.`zile`, ore.`id` ASC 

и результат этого запроса выглядит следующим образом:

image

Теперь это то, что I`ve сделано в PHP:

$oraru = "the query from up this page "; 
    $gaseste_oraru = mysql_query($oraru); 
    $numar_orar = mysql_num_rows($oraru); 
    if($numar_orar==0) 
    { 
     echo "Orarul nu este disponibil momentan."; 
    } 
    else 
    { 
    while($randorar=mysql_fetch_array($gaseste_oraru)) 
    { 
     $ziorar = $randorar['zile']; 
     $oraorar = $randorar['ore']; 
     $materieorar = $randorar['materie']; 

} }

Это таблица, я хочу, чтобы заполнить данными из базы данных: table

Здесь у вас есть код таблицы:

<div class="CSSTableGenerator" > 
       <table > 
        <tr> 
         <td> 
          Orar 
         </td> 
         <td> 
          Luni 
         </td> 
         <td > 
          Marti 
         </td> 
         <td> 
          Miercuri 
         </td> 
         <td> 
          Joi 
         </td> 
         <td> 
          Vineri 
         </td> 
        </tr> 
        <tr> 
         <td > 
          8:00 - 9:00 
         </td> 
         <td> 
          <select> 
    <option>Mate</option> 
    <option>Romana</option> 
    <option>Geogra</option> 
</select> 

         </td> 
         <td> 
          <select> 
    <option>Mate</option> 
    <option>Romana</option> 
    <option>Geogra</option> 
</select> 
         </td> 
         <td> 
          <select> 
    <option>Mate</option> 
    <option>Romana</option> 
    <option>Geogra</option> 
</select> 
         </td> 
         <td> 
          <select> 
    <option>Mate</option> 
    <option>Romana</option> 
    <option>Geogra</option> 
</select> 
         </td> 

          <td> 
          rand 1 
         </td> 
        </tr> 
        <tr> 
         <td > 
          9:00 - 10:00 
         </td> 
         <td> 
          rand 2 
         </td> 
         <td> 
          rand 2 
         </td> 
         <td> 
          rand 1 
         </td> 
         <td> 
          rand 1 
         </td> 
          <td> 
          rand 1 
         </td> 
        </tr> 
        <tr> 
         <td > 
          10:00 - 11:00 
         </td> 
         <td> 
          rand 2 
         </td> 
         <td> 
          rand 2 
         </td> 
         <td> 
          rand 1 
         </td> 
         <td> 
          rand 1 
         </td> 
          <td> 
          rand 1 
         </td> 
        </tr> 
        <tr> 
         <td > 
          11:00 - 12:00 
         </td> 
         <td> 
          rand 3 
         </td> 
         <td> 
          rand 3 
         </td> 
         <td> 
          rand 1 
         </td> 
         <td> 
          rand 1 
         </td> 
         <td> 
          rand 1 
         </td> 
       </table> 
      </div> 

NEVERMIND Dropdowns, я won`t ИСПОЛЬЗОВАТЬ ИХ !

У вас есть идеи, как его заполнить, НО если ничего не существует для интервала (например, Luni 8: 00-9: 00), то ничего не записывать в таблице? Большое спасибо !

EDIT

Вот что я пробовал:

<div class="CSSTableGenerator" > 
    <table > 
        <tr> 
         <td> 
          Orar 
         </td> 
         <?php 
    { 
     $oraru = "the query from up this page"; 
    $gaseste_oraru = mysql_query($oraru); 

    while($randorar=mysql_fetch_array($gaseste_oraru)) 
    { 
     $ziorar = $randorar['zile']; 
     $oraorar = $randorar['ore']; 
     $materieorar = $randorar['materie']; 
     echo "<td>"; 
     echo $randorar['zile']; 
     echo "</td>"; 
     echo "</tr>"; 
     echo "<tr>"; 
     echo "<td>"; 
     echo $randorar['ore']; 
     echo "</td>"; 
     echo"<td>"; 
     echo $randorar['materie']; 
     echo "</td>"; 
     echo "</tr>"; 
    }//sfarsit while 

Вот результат:

bad

Любые идеи? Благодаря!

+0

Поместите код таблицы в цикл while и создайте таблицу «на лету». – Mihai

+1

Вот что я пытался сделать, но он, похоже, не работает Михай. Я тоже из романии :) –

+1

Mi-am dat seama, salut.Here пример с таблицей, созданной с помощью php: http://stackoverflow.com/questions/3050558/create-table-with-php-and- populate-from-mysql? rq = 1 – Mihai

ответ

0

Ok, так что это решение:

$oraru = " 
     SELECT DISTINCT 
       zi.zile, 
       ore.ora AS ore, 
       materii.materie 
      FROM zi 
       LEFT JOIN orar ON zi.id = orar.id_zi 
       LEFT JOIN ore ON ore.id = orar.id_ora 
       LEFT JOIN nume_scoli ON nume_scoli.id = orar.id_scoala 
       LEFT JOIN materii_pe_clase ON materii_pe_clase.id_scoala = nume_scoli.id 
       LEFT JOIN clase ON materii_pe_clase.id_clasa = clase.id AND orar.id_clasa = clase.id 
       LEFT JOIN elevi ON elevi.id_clasa = materii_pe_clase.id_clasa 
       LEFT JOIN materii ON materii.id = orar.id_materie 
       WHERE clase.`id`=1 
      ORDER BY ore.`id`, zi.`zile` ASC"; 
     $gaseste_oraru = mysql_query($oraru); 
    $rows = array(); 
    while($randorar=mysql_fetch_array($gaseste_oraru)) 
    {   
     $ziorar = $randorar['zile']; 
     $oraorar = $randorar['ore']; 
     $materieorar = $randorar['materie']; 
     if(!isset($rows[$oraorar])){ 
      $rows[$oraorar] = array(); 
     } 
     $rows[$oraorar][$ziorar] = $materieorar;   
    }//sfarsit while 

    ?> 
<div class="CSSTableGenerator" > 
    <table > 
     <tr> 
      <td>Orar</td><td>Luni</td><td>Marti</td><td>Mercuri</td><td>Joi</td><td>Vineri</td> 
     </tr> 
    <?php 

     foreach ($rows as $key => $row) { 
      if(!isset($row['Luni'])) $row['Luni'] = '&nbsp;';//incase no data from database 
      if(!isset($row['Marti'])) $row['Marti'] = '&nbsp;';//incase no data from database 
      if(!isset($row['Miercuri'])) $row['Miercuri'] = '&nbsp;';//incase no data from database 
      if(!isset($row['Joi'])) $row['Joi'] = '&nbsp;';//incase no data from database 
      if(!isset($row['Vineri'])) $row['Vineri'] = '&nbsp;';//incase no data from database 
      echo "<tr>"; 
      echo "<td>".$key."</td>"; 
      foreach ($row as $day => $study) { 
       echo "<td>$study</td>";  
      } 
      echo "</tr>"; 
     } 
    ?> 
    </table> 
</div> 

Я понял это с некоторой помощью от друга!

Спасибо всем в любом случае!

1

Что я рекомендую для вас: ORDER BY ore.id, zi.zile.

Поскольку вы повторяете строку за строкой, а не столбцом по столбцу, вы сможете оптимизировать цикл while.

+1

Я тоже так пробовал. Но я не мог принять решение, поэтому использовал это. Благодаря! –

1

пытаются сделать что-то вроде этого

$xarr=Array(); 
$xcols=Array(); 
while($randorar=mysql_fetch_array($gaseste_oraru)) 
{ 
    $xcols[$randorar['zile']]++; 
    $xarr[$randorar['ore']][$randorar['zile']] = $randorar['materie'] 
} 
echo "<tr><th>orar</th>"; 
foreach(array_keys($xcols) as $x) 
    echo '<th>'.$x.'</th>'; 
echo "</tr>\n"; 

foreach($xarr as $key=>$y){ 
    echo '<tr><th>'.$key.'</th>'; 
    foreach(array_keys($xcols) as $x) 
     echo '<td>'.$y[$x].'</td>'; 
    echo "</tr>\n"; 
} 
+1

Примечание: Неопределенный индекс: Luni в C: \ wamp \ www \ index.php в строке 581, $ xcols [$ randorar ['zile']] ++ ;, поскольку у меня нет номера, но строка «Luni» или «Marti» или так далее –

+1

, удалив строку, код работает, но только для интервала (8-9, 9-10), а не для данных в таблице за каждый день ... I не знаю, как работать с массивами так хорошо, как я знаю, как работать с переменными. Благодарю вас за это время! –

+0

генерирует строки и столбцы только для данных, возвращаемых из вашего запроса. если вам нужно создать целую таблицу, вы должны заполнить свои массивы самим собой: $ xarr = Array ('8-9' = Array(), '9-10' = Array(), '11-12' = Array()); и для $ xcols = Array ('Luni', 'Marti', .....). О $ xcols [$ randorar ['zile']] ++, вы можете удалить его, если вы заполните $ xcols, или можете попробовать заменить его на $ xcols [$ randorar ['zile']] = 1; – cleverfox

Смежные вопросы