我有一个通过SELECT *进行的记录分组,它提供了以下结果:
-----------------------------------------------------------------------
| Room_Location - Room_Name |
-----------------------------------------------------------------------
| Device | Technical | Ergonomic |
-----------------------------------------------------------------------
| Device_Model - Device_Type | ☐ Pass ☐ Fail | ☐ Pass ☐ Fail |
| IP_Address | | |
-----------------------------------------------------------------------
| Device_Model - Device_Type | ☐ Pass ☐ Fail | ☐ Pass ☐ Fail |
| IP_Address | | |
-----------------------------------------------------------------------
then a new table:
-----------------------------------------------------------------------
| Room_Location - Room_Name |
-----------------------------------------------------------------------
| Device | Technical | Ergonomic |
-----------------------------------------------------------------------
| Device_Model - Device_Type | ☐ Pass ☐ Fail | ☐ Pass ☐ Fail |
| IP_Address | | |
-----------------------------------------------------------------------
| Device_Model - Device_Type | ☐ Pass ☐ Fail | ☐ Pass ☐ Fail |
| IP_Address | | |
-----------------------------------------------------------------------以此类推。
我知道有些人反对将代码与HTML交织在一起,但抛开这一点不谈,我所经历的是:第一条记录的Room code和Room Name并没有出现在第一条记录的上方,而是作为第二条记录的标题出现,并一直延伸到最后一条记录。
最后一条记录实际上在其标题中显示了上述房间记录的房间代码。
它正确地对项目进行了分组,只是将标题细节放在了错误的区域中,几乎就像需要记录集一样,但只需要房间位置和房间名称。
我的连接代码:
$result = mysqli_query($con,"SELECT * FROM RoomList ORDER BY Room_Code ASC");剩余部分:
<?php
/*// Start record fail error checking
if (!$result) {
printf("Error: %s\n", mysqli_error($con));
exit();
}
// Start record fail error checking */
if (mysqli_num_rows($result) === 0) {?>
<div id="resultserror">
No records could found for the selected view.</div>
<?php } else { ?>
<?php ;
$data = array();
while ($row = mysqli_fetch_assoc($result)) {
$itemName = $row["Room_Code"];
if (!array_key_exists($itemName, $data)) {
$data[$itemName] = array();
}
$data[$itemName][] = $row;
}
foreach ($data as $itemName => $rows) {
?>
<table id="results" width="100%" cellpadding="3" cellspacing="0">
<tr><td colspan="4"><?php echo($row['Room_Code']);?> - <?php echo($row['Room_Name']);?></td></tr>
<tr>
<th width="" align="center">Device</th>
<th width="100" align="center">Technical</th>
<th width="100" align="center">Ergonomic</th>
</tr>
<?php
foreach ($rows as $row) {
?>
<tr>
<td align='left'>
<strong>Device:</strong><?php echo($row['Device_Model']);?><br>
<strong>Type:</strong> <?php echo($row['Device_Type']);?><br>
<strong>IP Address:</strong> <?php echo($row['IP_Address']);?></td>
<td align='center'>☐ Pass<br>
☐ Fail</td>
<td align='center'>☐ Pass<br>
☐ Fail</td>
</tr>
<?php
}
?>
<tr>
<td colspan="7" align="center">- end of room report -</td></tr>
</table>
<?php
}
mysqli_close($con);
}?>
<div id="reportgen"><?php echo("Report Generated: " . date("Y-m-d H:i:s")); ?></div>
<div id="reportcount"><?php echo("Record Count: " . mysqli_num_rows($result) . "");?></div>发布于 2021-01-07 12:11:49
你的问题是在这一行:
<tr><td colspan="4"><?php echo($row['Room_Code']);?> - <?php echo($row['Room_Name']);?></td></tr>您正在从$row回显,当您第一次遇到此代码时,它包含从表获取的最后一行,在后续循环中包含前一项的最后一行。因此,所有的标头都相对于它们应该在的位置移动了1。您应该将其更改为从当前行获取数据:
<tr><td colspan="4"><?php echo($rows[0]['Room_Code']);?> - <?php echo($rows[0]['Room_Name']);?></td></tr>https://stackoverflow.com/questions/65606437
复制相似问题