0

此页面是通过 PHP 脚本生成的。这是错误消息:

第 14 行,第 8 列:未完成的“tbody”结束标记

</tbody></table>

最有可能的是,您嵌套了标签并以错误的顺序关闭了它们。例如<p><em>...</p>是不可接受的,因为<em>必须在之前关闭<p>。可接受的嵌套是: <p><em>...</em></p>

另一种可能性是您使用的元素需要您未包含的子元素。因此父元素“未完成”,不完整。例如,在 HTML 中,<head>元素必须包含<title>子元素,列表需要适当的列表项(<ul> 并且<ol>需要<li>;需要<dt><dd>),等等。

当您在 Google Chrome 中查看源代码时,我的代码如下所示:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 

 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title></title> 
    <link href="CSS/Index.css" rel="stylesheet" type="text/css" /> 
</head> 
<body> 
<h3>Search Results</h3> 
<table> 
<tbody> 
</tbody></table> 
</body> 
</html>

当您在 Firefox 中查看源代码时,我的代码如下所示:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>PcDescribeTable</title>
<link href="CSS/Index.css" rel="stylesheet" type="text/css" /> 
</head>
<body>
<h3>Search Results</h3>
<table>
<tr><td>Intel i7-950 3.06GHz</td></tr>
<tr><td>WD 500GB 7200RPM SATA 6GBs</td></tr>
<tr><td>XFX Radeon HD 6870</td></tr>
<tr><td>CORSAIR 4GB DDR3 1600</td></tr>
<tr><td>ASUS P6X58D-E LGA 1366</td></tr>
<tr><td>CORSAIR Enthusiast Series 650W</td></tr>
<tr><td>VisonTek Bigfoot Killer</td></tr>
<tr><td>Creative Sound Blaster X-Fi HD</td></tr>
<tr><td>Razer Lycrosa</td></tr>
<tr><td>24x DVD Burner</td></tr>
<tr><td>Asus 23" Full HD LED</td></tr>
<tr><td>Razer Death Adder</td></tr>
</table>
</body>
</html>

这就是 PHP 脚本的样子:

<table>
<tbody>
<?php
for ( $counter = 0; $row = mysql_fetch_row( $result ); $counter++ )
{
print("<tr>");
foreach ( $row as $key => $value )
print( "<td>".$value."</td>");
print("</tr>");
}
print("</tbody>");
print("</table>");
mysql_close($database);
?>
4

5 回答 5

4

它没有通过验证,因为您的 TBODY 中没有任何内容。添加一些带有列的行,它将验证。

于 2011-03-09T04:57:49.817 回答
1

我不知道那个 for 循环是否会起作用。另外,你似乎没有用$counter任何东西。改为尝试:

while ( $row = mysql_fetch_row( $result ) )

如果这仍然没有回显任何内容,则您可能没有任何行可以开始获取。所以你的标签之间没有任何输出<tbody>,一个空<tbody>的被认为是无效的 XHTML。

于 2011-03-09T04:55:06.060 回答
0

使用 PHP,使用 if 语句来测试是否已发送查询。如果没有,甚至不要将表格打印到屏幕上。

<?php
if (mysql_fetch_row( $result )) {
?>
<table>
<tbody>
<?php
for ( $counter = 0; $row = mysql_fetch_row( $result ); $counter++ ) {
print("<tr>");
foreach ( $row as $key => $value )
print( "<td>".$value."</td>");
print("</tr>");
}
mysql_close($database);
?>
</tbody>
</table>
<?php
}
?>
于 2011-03-09T18:35:43.657 回答
0

如果表中有行,则只包括表。如果您提供了更多的 php 脚本,则 if 语句应该可以轻松地排除它们并允许它进行验证。

编辑:直到我看到对另一个解决方案的评论,我才完全理解你的问题。

这里发生的是您的查询取决于 POST 数据、cookie 或验证器未传递的某种数据。解决方案可能是在查询中使用默认值,以防未发送。正如我最初所说,如果没有发送帖子数据,您也可以将表格全部切掉。

于 2011-03-09T04:55:56.480 回答
0

您的代码看起来正确,生成的 HTML 看起来也正确,但我假设 mysql_fetch_row 返回了一些东西。这是否有可能发送看起来像 HTML 标记的东西?

那是我开始寻找的地方。确认语法适合 PHP 并返回您所期望的。

于 2011-03-09T04:58:26.523 回答