我有一个mySQL数据库,我正在使用PHP来抓取它并将其显示在HTML表中。 它的设置是这样的:
<table>
<tr>
<td>Title 1</td>
<td>Title 2</td>
</tr>
<?php
$i=0;
while ($i < $num) {
$col1=mysql_result($result,$i,"col1");
$col2=mysql_result($result,$i,"col2");
?>
<tr>
<td><?php echo $col1; ?></td>
<td><?php echo $col2; ?></td>
</tr>
</table>
<?php
$i++;
echo '<br />';
}
?>
问题:对于它提取的第一组数据,列与标题对齐。 但是对于之后的每一行重复,列由一个空格分隔,并且与它们的标题不对齐。 它看起来像这样:
Title 1 Title 2
col1 col2
col1 col2
col1 col2
抱歉,如果措辞令人困惑。
您正在关闭循环内的表,请尝试将</table>
拉出循环。
将</table>
移动到最后一个 PHP 块之后。当您只想循环并创建新行时,您反复关闭表。将表的关闭保存到循环完成之后。
您正在关闭循环内的表。完成后,您需要关闭它。
<table>
<tr>
<td>Title 1</td>
<td>Title 2</td>
</tr>
<?php
$i=0;
while ($i < $num)
{
$col1=mysql_result($result,$i,"col1");
$col2=mysql_result($result,$i,"col2");
?>
<tr>
<td><?php echo $col1; ?></td>
<td><?php echo $col2; ?></td>
</tr>
<?php
$i++;
echo '<br />';
}
?>
</table>
为了更加清楚起见,第一行按预期工作,因为您尚未关闭表格。
鉴于其他表格信息是在没有开始<table>
标签的情况下发布的,您会认为它根本不会显示 - 但如今大多数浏览器都会尝试即时更正 HTML,因此某些内容(例如打开时缺少表格标签)显示得好像它前面有一个。
正如其他人提到的。您的桌子正在循环内关闭。我将所有PHP代码放在一起,以帮助避免与循环混淆。
<table>
<tr>
<td>Title 1</td>
<td>Title 2</td>
</tr>
<?php
$num = $mysql_result->num_rows;
for($i = 0; $i < $num; $i++) {
$row = $mysql_result->fetch_assoc();
echo '<tr>'n';
echo '<td>'.$row['col1'].'</td>'n';
echo '<td>'.$row['col2'].'</td>'n';
echo '</tr>'n';
echo '<br />';
}
?>
</table>