【问题标题】:HTML Table not displaying MySQL data correctlyHTML 表未正确显示 MySQL 数据
【发布时间】:2012-10-30 04:06:09
【问题描述】:

当我尝试从 MySQL 表中检索数据时,表未正确呈现。基本上,我使用 if 语句来查看是否存在任何内容(如果用户发布了信息),如果有的话,我会转到在 HTML 表中显示数据的 else 条件。这是我为 else 语句开始的代码。

else{
//BEGIN JOB POSTING
echo "<table border=1 width=200 height=200>";
while($row_job = mysqli_fetch_array($result_job))
{
echo "<tr>".$row_job['subject']."</tr>";
}
mysqli_free_result($result_job);
echo "</table>";
}

我放置宽度和高度以及边框的原因是为了让您可以看到表格在哪里呈现以及实际信息在哪里呈现。正在显示信息,它只是并排显示,没有空格,而不是&lt;tr&gt;。截图如下:

疯狂的是,如果你检查这个页面的源代码,它看起来像这样:

<table border=1 width=200 height=200><tr>twkjljl</tr><tr>lkjljl</tr></table>

但是如果你在谷歌浏览器中检查元素,它看起来像这样:

所以我尝试了几件事,我更改了代码以让它们显示在&lt;td&gt; 中并且它可以正确呈现。这是代码和屏幕截图:

else{
//BEGIN JOB POSTING
echo "<table border=1 width=200 height=200><tr>";
while($row_job = mysqli_fetch_array($result_job))
{
echo "<td>".$row_job['subject']."</td><br />";
}
mysqli_free_result($result_job);
echo "</tr></table>";
}

虽然这很好,但我希望数据显示在不同的行而不是不同的列中,并且看不到代码中的错误在哪里。世界上到底发生了什么?

【问题讨论】:

  • 我有一种强烈的感觉,那就是开始了解有效 HTML 的含义以及如何验证自己的脚本是一个非常好的主意。一个好的起点是validator.w3.org
  • 虽然您的问题已经得到解答,但我强烈建议您阅读有关 HTML 表格的文档。你可能会学到一两件事:)。至少您应该了解 和 之间的区别,并且 标记始终放在 标记内,但请务必阅读该文档:)
  • 啊,哈哈,我不敢相信我忽略了这一点。我正忙于 MySQL,我对我的 HTML 完全空白。感谢所有的答案!

标签: php html mysql mysqli html-table


【解决方案1】:

&lt;tr&gt;之后需要将&lt;td&gt;中的所有数据封装起来。

else{
//BEGIN JOB POSTING
echo "<table border=1 width=200 height=200>";
while($row_job = mysqli_fetch_array($result_job))
{
echo "<tr><td>".$row_job['subject']."</td></tr>";
}
mysqli_free_result($result_job);
echo "</table>";
}

【讨论】:

    【解决方案2】:

    您需要 tr 和 td 才能在表格中显示元素:

         else{
             //BEGIN JOB POSTING
             echo "<table border=1 width=200 height=200>";
            while($row_job = mysqli_fetch_array($result_job))
            {
               echo "<tr><td>".$row_job['subject']."</td></tr>";
            }
              mysqli_free_result($result_job);
            echo "</table>";
         }
    

    以下是表格的一行。

        <tr><td>row1</td></tr>
    

    如果要添加更多列,请添加更多两个 td。

    【讨论】:

      【解决方案3】:

      尝试成对使用&lt;tr&gt;&lt;td&gt;

      else{
      //BEGIN JOB POSTING
      echo "<table border=1 width=200 height=200>";
      while($row_job = mysqli_fetch_array($result_job))
      {
      echo "<tr><td>".$row_job['subject']."</td></tr>";
      }
      mysqli_free_result($result_job);
      echo "</table>";
      }
      

      【讨论】:

        【解决方案4】:

        TR是一个表格行,由许多表格单元格TD组成。

        因此 HTML 表格如下所示:

        <table>
            <tbody>
                <tr>
                    <td></td>
                    <td></td>
                    <td></td>
                </tr>
            </tbody>
        </table>
        

        【讨论】:

          【解决方案5】:

          我强烈建议您为Iterator Support of Mysqli Results 使用 PHP 5.4:

          foreach ($result_job as $row)
          {
              echo "<tr><td>$row_job[subject]</td></tr>";
          }
          

          如果你不能使用那个 PHP 版本 - 我假设你没有做任何 mysqli_* 特定的事情,因为你需要那个扩展 - 请改用 PDO 扩展。它拥有这种支持的时间要长得多。

          【讨论】:

            猜你喜欢
            相关资源
            最近更新 更多
            热门标签