gpt4 book ai didi

php - 来自多个 MySQL 表的单个 HTML 表

转载 作者:可可西里 更新时间:2023-11-01 06:49:22 26 4
gpt4 key购买 nike

我已经为此苦苦挣扎了一段时间;我会尽可能简单地解释它。

考虑这个 MySQL 表:

+----------+-----------+---------+--------+
|status_id |session_id |pilot_id |present |
+----------+-----------+---------+--------+
|1 |61 |901 |1 |
|2 |63 |901 |1 |
|3 |62 |901 |0 |
|4 |62 |902 |1 |
|5 |63 |903 |1 |
+----------+-----------+---------+--------+

session_idpilot_id 都是外键,引用另一个表中的主键。相同的 pilot_id 可以与不同的 session_id 相关联,但是每个 pilot_id-session_id 的组合都是唯一的。

我需要制作一个 HTML 表格(在 PHP 中)来显示如下数据:

+----------+---------+---------+---------+
| |61 |62 |63 |
+----------+---------+---------+---------+
|901 |X | |X |
|902 | |X | |
|903 | | |X |
+----------+---------+---------+---------+

因此,行是 pilot_id,列是 session_id。当 pilot_id-session_id 组合的 present 值为 1 时,应检查相应的单元格。 (即当行组合为零或组合在 MySQL 表中不存在时,HTML 表中不应出现任何内容)

呼。

有什么想法吗?

谢谢!


我已经尝试了 erisco 提出的答案,但我很困惑。 (评论字段太小,无法解释,因此更新了我的问题)。

这是我正在处理的实际数据:

+----------+-----------+---------+--------+
|status_id |session_id |pilot_id |present |
+----------+-----------+---------+--------+
|7 |65 |33 |1 |
|8 |66 |33 |1 |
|9 |65 |17 |0 |
|10 |66 |16 |1 |
+----------+-----------+---------+--------+

我使用 $rows = mysqli_fetch_array($result);。我已确认查询正在返回正确的数据。

但是,当我使用 ericso 提出的答案时,我得到了看似任意的数据。这是生成的 HTML 表格:

+----------+---------+---------+---------+---------+
| |1 |3 |6 |7 |
+----------+---------+---------+---------+---------+
|1 |X | | | |
|3 | | | | |
|6 | | | | |
|7 | | | | |
+----------+---------+---------+---------+---------+

此外,“X”位置与当前值无关。

知道为什么会这样吗?

谢谢!

最佳答案

幸运的是,您只需要一个查询。假设 $rows 是你从数据库中取出的数据的格式:

<?php

$rows = array(
array(
'status_id' => 1,
'session_id' => 61,
'pilot_id' => 901,
'present' => 1,
),
array(
'status_id' => 2,
'session_id' => 63,
'pilot_id' => 901,
'present' => 1,
),
array(
'status_id' => 3,
'session_id' => 62,
'pilot_id' => 901,
'present' => 0,
),
array(
'status_id' => 4,
'session_id' => 62,
'pilot_id' => 902,
'present' => 1,
),
array(
'status_id' => 5,
'session_id' => 63,
'pilot_id' => 903,
'present' => 1,
)
);

$session_ids = array();
$pilot_ids = array();
$crosses = array();

foreach ($rows as $row) {
$session_ids[$row['session_id']] = $row['session_id'];
$pilot_ids[$row['pilot_id']] = $row['pilot_id'];
if ($row['present'] == 1) {
$cross_index = $row['session_id'].'.'.$row['pilot_id'];
$crosses[$cross_index] = $cross_index;
}
}

sort($session_ids);
sort($pilot_ids);

?>

<table>
<tr>
<th></th>
<?php foreach ($session_ids as $sess_id): ?>
<th><?php echo $sess_id; ?></th>
<?php endforeach; ?>
</tr>
<?php foreach ($pilot_ids as $pilot_id): ?>
<tr>
<th><?php echo $pilot_id; ?></th>
<?php foreach ($session_ids as $sess_id): ?>
<?php if (isset($crosses[$sess_id.'.'.$pilot_id])): ?>
<td>X</td>
<?php else: ?>
<td></td>
<?php endif; ?>
<?php endforeach; ?>
</tr>
<?php endforeach; ?>
</table>

关于php - 来自多个 MySQL 表的单个 HTML 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2634307/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com