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>'; ?>

ただし、2 番目の例 (一重引用符は文字列リテラル) では、二重引用符をエスケープする必要はありません。ただし、どちらの場合でも、これを維持する必要がある人は、これを好むでしょう:

<div class="someclass"><?php echo $content; ?></div>

すっきりするからです。なんで?それはただです。また、人々が使用するエディタの多くは、言語ごとに異なる構文を強調表示するため、部分的に読みやすくなっています。

php で html をエコーすることが理にかなっている場合もありますが、慎重に扱ってください。あなたの後にあなたのコードを読む人は誰でもそれを高く評価するでしょう。

補足 - 例の html 属性「url」を「data-url」に変更することをお勧めします。これは、人々を満足させるために使用する必要がある別の規則です。カスタム アトリビュートはサポートされていますが、自分で作成するのは得策ではありません。ただし、必要に応じて、 data- がカスタム属性の標準プレフィックスです。

于 2012-11-16T21:06:20.993 に答える