0

我有一个奇怪的问题,我有一个由数据库中的信息填充的表。

当我从数据库中选择时,信息完全符合我的预期。

出于某种原因,在我的 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>

这一切看起来都很好,但是在浏览器中查看时,这就是我所看到的。

在此处输入图像描述

我该如何追踪这个神秘的领域?

4

2 回答 2

2

echo "<td>" . $row['lastName'] . "</h3><td>\n";

应该

echo "<td>" . $row['lastName'] . "</td>";

于 2012-11-16T01:16:52.293 回答
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- 是自定义属性的标准前缀。

于 2012-11-16T21:06:20.993 回答