首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将mysql查询输出到html表?

如何将mysql查询输出到html表?
EN

Stack Overflow用户
提问于 2013-09-28 21:18:14
回答 3查看 1.8K关注 0票数 2

再次需要你的帮助。

所以我有一个带有多个变量的查询,我必须将这些变量输出到一个表中。

下面是查询:

代码语言:javascript
复制
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

该查询的结果如下所示:

这就是我在php中所做的:

代码语言:javascript
复制
  $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'];
}
}

下面是我想用数据库中的数据填充的表:

下面是表的代码:

代码语言:javascript
复制
<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>

别管下拉菜单了,我不会用的!

您是否知道如何填充它,但如果某个时间间隔(例如Luni 8:00-9:00)没有任何内容,则不在表中写入任何内容?

编辑

这是我尝试过的:

代码语言:javascript
复制
<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

结果如下:

有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-09-29 00:15:43

好的,这就是解决方案:

代码语言:javascript
复制
 $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>

我是在朋友的帮助下弄明白的!

无论如何,谢谢大家!

票数 0
EN

Stack Overflow用户

发布于 2013-09-28 21:31:48

我推荐你去ORDER BY ore.id, zi.zile

由于是逐行迭代,而不是逐列迭代,因此您将能够优化while循环。

票数 1
EN

Stack Overflow用户

发布于 2013-09-28 21:46:40

试着这样做

代码语言:javascript
复制
$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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19067410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档