【问题标题】:How to output mysql query to a html table?如何将mysql查询输出到html表?
【发布时间】:2013-10-04 17:36:39
【问题描述】:

再次需要你的帮助。

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

这里是查询:

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 中所做的:

  $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'];
}
}

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

这里有表格的代码:

<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),那么在表格中什么也不写?

编辑

这是我尝试过的:

<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

结果如下:

有什么想法吗?

【问题讨论】:

  • 将表格代码放入while循环,即时生成表格。
  • 这就是我试图做的,但它也不是来自罗马尼亚的t seem to work Mihai. Im :)
  • Mi-am dat seama,salut.Here is an example with a table generated from php: stackoverflow.com/questions/3050558/…
  • 敬礼!嗯……让我再试一次。我以前这样做过,但是自从我上次这样做以来已经过去了一段时间,所以我可能忘记了如何做。我会尝试回来发布解决方案(如果可行的话)。多头!
  • 我看到你只是生成它们,而不是用它们在表格中回显它们。

标签: php mysql html-table


【解决方案1】:

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

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

【讨论】:

  • 我也试过这样。但我无法决定,所以我使用了它。谢谢!
【解决方案2】:

尝试做这样的事情

$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";
}

【讨论】:

  • 注意:未定义的索引:Luni in C:\wamp\www\index.php on line 581, $xcols[$randorar['zile']]++;,因为我没有里面有一个数字,但是一个字符串“Luni”或“Marti”等等
  • 通过删除该行,代码有效,但仅适用于间隔(8-9、9-10),不适用于每天表中的数据...我不知道如何使用数组,就像我知道如何使用变量一样好。谢谢你的时间!
  • 它仅为查询返回的数据生成行和列。如果您需要生成整个表,您必须自己填充数组: $xarr=Array('8-9'=Array(),'9-10'=Array(),'11-12'=Array() );对于 $xcols=Array('Luni','Marti',.....)。关于$xcols[$randorar['zile']]++,填$xcols可以删除,也可以尝试用$xcols[$randorar['zile']]=1;
【解决方案3】:

好的,这就是解决方案:

 $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>

我在朋友的帮助下想通了!

还是谢谢大家!

【讨论】:

    猜你喜欢
    • 2015-10-22
    • 1970-01-01
    • 2015-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-25
    相关资源
    最近更新 更多