データベースからテーブルを作成する PHP に取り組んでいますが、この 1 つのセクションが私を困惑させています。内部に正しく配置されます:
外観は次のとおりです。
$STH = $DBH->query($query_complete);
// Perform the query
$STH->setFetchMode(PDO::FETCH_ASSOC);
$row = $STH->fetch();
// Initialize our variables used for row counts, etc.
$i = 0;
$prevRowHour = 25; // Start at 25th hour as nothing will match this first-up.
$rowCount = $STH->rowCount();
if($rowCount==0) {
echo 'There are no results for this time frame.';
}
else {
// Create our table heading
echo <<<EOD
<table class="tablesorter" id="trendTable">
<thead>
<tr>
<th>Hour added</th>
<th>Case Number</th>
<th>Device</th>
<th>Component</th>
<th>Tier</th>
<th>Resolved</th>
<th>Exact Time Added</th>
</tr>
</thead>
<tbody>
EOD;
// Save the output into a variable to output after the sort order div
while($row = $STH->fetch()) {
// Check if this hour matches the last.
if ($prevRowHour != $row['hour'] ) {
// If it doesn't -> Create new row
// Then make our fresh row
/* ~~~THIS LINE OUTPUTS WEIRDLY~~~ */ echo '<tr colspan="7">'.$row['hour'].'</tr>'; // THIS OUTPUTS ALL WEIRDLY
}
// Either way, we add a new row.
$prevRowHour = $row['hour'];
$i++;
}
echo <<<EOD
</tbody>
</table><!-- end of trendTable -->
EOD;
}
問題があると思われる行は次のとおりです。
/* THIS LINE OUTPUTS WEIRDLY */ echo '<tr colspan="7">'.$row['hour'].'</tr>'; // THIS OUTPUTS ALL WEIRDLY
要素インスペクターに従って、このセグメントが出力している HTML のセクションを次に示します (OS X の Chrome、Safari、および FireFox でテスト済み)。
http://i.stack.imgur.com/tGUmF.png
ビューソースではまだ: 適切に表示されます:
..<tbody><tr colspan="7">13</tr><tr colspan="7">11</tr><tr colspan="7">10</tr>..
外部の問題ではないことを確認するために、すべての JavaScript を削除して無効にしました。css/nojs がなく、PHP からの純粋な HTML である場合に発生します。
また、エコーされたすべての EOD を通常の 1 行の文字列に切り替えました。
このようなことをこれまでに見たことがあり、それを止める方法を知っている人はいますか?