此页面是通过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>Donald Podhorsky</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);
?>
答案 0 :(得分:4)
它没有通过验证,因为你的TBODY中什么也没有。添加一些带有列的行,它将验证。
答案 1 :(得分:1)
我不知道for循环是否有效。另外,您似乎没有使用$counter
。请尝试改为:
while ( $row = mysql_fetch_row( $result ) )
如果仍然没有回显任何内容,那么您可能没有要开始获取的任何行。因此,<tbody>
标记之间不会输出任何内容,而空<tbody>
被视为无效的XHTML。
答案 2 :(得分:0)
如果表中有行,则只包括该表。如果你提供了更多的php脚本,if语句应该很容易排除它们并允许它进行验证。
编辑:在我看到对其他解决方案的评论之前,我完全不了解您的问题。
这里发生的是您的查询取决于POST数据或Cookie,或者验证程序未传递的某种数据。解决方案可能是在查询中有一个默认值,以防一个未发送。如我原先所说,如果没有发送的帖子数据,你也可以一起砍掉桌子。
答案 3 :(得分:0)
您的代码看起来正确并且生成的HTML看起来正确,但我认为mysql_fetch_row会返回一些内容。是否有可能发送看起来像HTML标签的东西?
这就是我开始寻找的地方。确认语法适合PHP并返回您期望的内容。
答案 4 :(得分: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
}
?>