我有一个奇怪的问题,我在桌面上填充了数据库中的信息。
当我从数据库中选择时,信息完全按照我的预期返回。
出于某些原因,在我的HTML表格中,我有一个奇怪的字段,我无法看到源。
我的表标题行:
echo "<tr>\n";
echo "<th><h3>ID</h3></th>\n";
echo "<th><h3>First Name</h3></th>\n";
echo "<th><h3>Last Name</h3></th>\n";
echo "<th><h3>Odd additional field</h3></th>\n";
echo "<th><h3>Country</h3></th>\n";
echo "<th><h3>Room type</h3></th>\n";
echo "<th><h3>Number</h3></th>\n";
echo "<th><h3>Checkin Date</h3></th>\n";
echo "<th><h3>Nights</h3></th>\n";
echo "</tr>\n";
我称之为“奇数附加字段”的字段即使我将其取出,也只是未命名。
填充表格的代码:
while($row = $sth->fetch()){
echo "<tr url=\"edit.php?id=" . $row['id'] . "\">\n";
echo "<td>" . $row['id'] . "</td>\n";
echo "<td>" . $row['firstName'] . "</td>\n";
echo "<td>" . $row['lastName'] . "</h3><td>\n";
echo "<td>" . $row['country'] . "</td>\n";
echo "<td>" . $row['roomtype'] . "</td>\n";
echo "<td>" . $row['roomnumber'] . "</td>\n";
echo "<td>" . $row['checkin'] . "</td>\n";
echo "<td>" . $row['nights'] . "</td>\n";
echo "</tr>\n";
}
进入浏览器的结果HTML:
<table width = "80%" align="center" id="example">
<tr>
<th><h3>ID</h3></th>
<th><h3>First Name</h3></th>
<th><h3>Last Name</h3></th>
<th><h3>Country</h3></th>
<th><h3>Room type</h3></th>
<th><h3>Number</h3></th>
<th><h3>Checkin Date</h3></th>
<th><h3>Nights</h3></th>
</tr>
<tr url="edit.php?id=1">
<td>1</td>
<td>Joe</td>
<td>Schmoe</h3><td>
<td>canada</td>
<td>mdorm</td>
<td></td>
<td>2012-11-16</td>
<td>5</td>
</tr>
</table>
这一切似乎都很好,但在浏览器中查看时,这就是我所看到的。
我如何追踪这个神秘的领域?
答案 0 :(得分:2)
echo "<td>" . $row['lastName'] . "</h3><td>\n";
应该是
echo "<td>" . $row['lastName'] . "</td>";
答案 1 :(得分:1)
OP问一个关于为他的例子编写html的首选方法的例子。请不要将此视为对其问题的实际答案:
<?php while($row = $sth->fetch()): ?>
<tr data-url="edit.php?id=<?php echo $row['id']; ?>">
<td><?php echo $row['id'] ; ?></td>
<td><?php echo $row['firstName']; ?></td>
<td><?php echo $row['lastName']; ?></h3><td>
<td><?php echo $row['country']; ?></td>
<td><?php echo $row['roomtype']; ?></td>
<td><?php echo $row['roomnumber']; ?></td>
<td><?php echo $row['checkin']; ?></td>
<td><?php echo $row['nights']; ?></td>
</tr>
<?php endwhile; ?>
这就是为什么这是首选,尽管意见可能因人而异: 可维护性: 如果代码更容易阅读,则更容易维护。当你在php中回显html时,你会遇到逃避HTML的问题,这使得阅读更加混乱......
<?php echo "<div class=\"someclass\">" . $content . "</div>"; ?>
实际上与:
相同<?php echo '<div class="someclass">' . $content . '</div>'; ?>
除了第二个例子(单引号是字符串文字)不需要转义双引号。但是,在任何一种情况下,任何必须维护它的人都会更喜欢这个:
<div class="someclass"><?php echo $content; ?></div>
因为它更干净。为什么?它就是。此外,许多人使用的编辑器会突出显示每种语言的语法,因此部分使其更易于阅读。
在某些情况下,回显php中的html会有所帮助,但请谨慎对待它。任何在您欣赏它之后阅读您的代码的人。
旁注 - 您可能希望将示例中的html属性“url”更改为“data-url”,因为这是您应该用来让人们满意的另一种惯例。支持自定义属性,但不要随意制作它们。但是如果必须,data-是自定义属性的标准前缀。