从MySQL数据库填充html表时出错。

时间:2015-10-08 12:21:04

标签: php html

我正在尝试使用数据库中的数据填充我的html表,但每个新行都添加到表中,表格向下移动。例如,如果向表中添加了38行,则该表将变为不可见。你必须向下滚动才能看到表格。问题可能是什么?

echo "
<div class='container'>

        <span class='cc' style='font-weight: bold;'>Count: $stat</span></br></br>
<table class='col-md-9' border='1'>

    <th>Agent's name</th>
    <th>Student's name</th>
    <th>Student's number</th>
    <th>Accommodation type</th>
    <th>School</th>
    <th>Date & Time</th>

    ";
foreach($db->query($select) AS $result){

    echo "

    <tr><td>{$result['agent_name']}</td>
    <td>{$result['student_name']}</td>
    <td>{$result['student_number']}</td>
        <td>{$result['accommodation']}</td>
    <td>{$result['school']}</td>
    <td>{$result['contact_date']}</td>
    </tr>
    </br>

    ";   
}
echo "

</table>
</div>

";

3 个答案:

答案 0 :(得分:3)

您不能直接在<th><table>。请将它们包裹在<tr>内。

您必须从foreach获取行才能获得结果行。您正在循环的那个只是stdObject ResultSet。将您的代码更改为:

$result = $db->query($select)
if (mysqli_num_rows($result) > 0)
  while (false != ($row = mysqli_fetch_array($result)))
    // Loop here.

是的,正如其他人所说,<table>代码只能包含<tbody><thead><tfoot><tr>。没有其他的。没有像</br>这样的标签。它必须是<br />。刷新HTML的基础知识。

答案 1 :(得分:0)

两件事:

首先,您需要将标题元素包装在一行中:

<tr> <!-- here -->
<th>Agent's name</th>
<th>Student's name</th>
<th>Student's number</th>
<th>Accommodation type</th>
<th>School</th>
<th>Date & Time</th>
</tr> <!-- and here -->

其次,这些是什么?:

</br>

浏览器可能会将它们解释为:

<br />

这意味着您要在每个行的表结构中添加换行符。这可能是无效的(因为它超出了表格单元格和表格本身的一部分),但也可能是为什么每一行都将显示向下推得更远。从循环中删除它。

由于代码生成了无效的表标记,因此样式化和呈现表将会有些不确定,并且每个浏览器可能会有所不同。

答案 2 :(得分:0)

  

您需要将public class ZoomableCanvas extends Pane { DoubleProperty scale = new SimpleDoubleProperty(1.0); public ZoomableCanvas() { scaleXProperty().bind(scale); scaleYProperty().bind(scale); getChildren().addListener((Change<? extends Node> c) -> { while (c.next()) { if (c.wasAdded()) { for (Node child : c.getAddedSubList()) { child.scaleXProperty().bind(scale); child.scaleYProperty().bind(scale); } } if (c.wasRemoved()) { for (Node child : c.getRemoved()) { child.scaleXProperty().unbind(); child.scaleYProperty().unbind(); } } } }); } public double getScale() { return scale.get(); } public void setScale(double scale) { this.scale.set(scale); } public void setPivot(double x, double y) { setTranslateX(getTranslateX() - x); setTranslateY(getTranslateY() - y); } } 包裹在<th></th>中,

确实如此。

其次,在这种情况下,我建议不要使用<tr></tr>。以下是代码的样子:

echo

这将是我更喜欢的代码,因为您将在代码编辑器中保留HTML颜色,这使其他人可以更轻松地进行调试。

小解释: <div class='container'> <span class='cc' style='font-weight: bold;'><?php Count: $stat ?></span></br></br> <table class='col-md-9' border='1'> <tr> <th>Agent's name</th> <th>Student's name</th> <th>Student's number</th> <th>Accommodation type</th> <th>School</th> <th>Date & Time</th> </tr> <?php foreach($db->query($select) AS $result): ?> <tr> <td><?=$result['agent_name']?></td> <td><?=$result['student_name']?></td> <td><?=$result['student_number']?></td> <td><?=$result['accommodation']?></td> <td><?=$result['school']?></td> <td><?=$result['contact_date']?></td> </tr> </br> <?php endif; ?> </table> </div> <?=易于使用打开和关闭标记来回显HTML中的变量。