gpt4 book ai didi

php - 协调具有动态行和列的表的问题

转载 作者:行者123 更新时间:2023-11-29 14:22:32 24 4
gpt4 key购买 nike

请耐心听我说——这可能有点令人困惑。

我正在使用 SQL 检索两组数据。这是带有查询的代码。我正在使用 Zend 框架。

$assignments = $db->fetchAll("SELECT id,name,class FROM assignments");
foreach($assignments as $a) {
$assignmentID = $a['id'];
$studentData = $db->fetchAll(
"SELECT student,assignment,status,assignmentID FROM student_assignments WHERE assignmentID='$assignmentID'"
);

echo "<th>".$a['name']."</th>";

foreach($studentData as $s) {
$bottom .= "<tr><td>" . $s['student'] . " " . $s['assignmentID']
. " ".$s['status'] . "</td></tr>";
$i++;
}
}
echo "</tr>$bottom;";

以下是 HTML 中的输出:

|Assignment on 07/07/2012|  |Assignment on 07/12/2012|   |Assignment on 07/15/2012|
117 1 Y
332 1 N
36 1 N
420 1 N
332 1 Y
326 2 N
212 2 N
461 2 N
117 2 N
212 2 N
212 3 N
326 3 N
117 3 Y
420 3 Y

现在顶部部分工作得很好——它动态地显示数据库中的每个分配。但我一直在试图找出一种方法来获取适当的数据以显示在这些列下,但没有效果。这是我最接近让它看起来有点正确的一次。

本质上,中间有“2”和“3”的数据应该分别进入第二列和第三列。但这并没有发生,因为所有数据都存储到 $bottom 变量中,而不是每个赋值的数据。

有人有什么建议吗?这让我发疯,我觉得解决方案就在我面前。

谢谢!

最佳答案

首先,您要遍历每个学生作业,并将作业表左连接到其中,以便您可以知道与之相关的作业的名称。

$students = $db->fetchAll('SELECT sa.student,sa.assignment,sa.status,sa.assignmentID,a.name
FROM student_assignments AS sa
LEFT JOIN assignments AS a ON sa.assignmentID=a.id');

然后,根据结果,您可以构建一个数组,以使用相同的分配对每个人进行重新分组:

$columns = Array();
foreach($students as $s) {
$row = '<tr><td>'.$s['student'].' '.$s['assignmentID'].' '.$s['status'].'</td></tr>';
array_push($columns[$s['name']], $row);
}

然后用这个数组,你终于可以打印你的内容了:

foreach ($columns as $key=>$value) {
echo '<th>'.$key.'</th>';
foreach ($value as $v) {
echo $v;
}
}

当然,这可以更紧凑(减少为嵌套循环),我无法完全测试它,但它应该对您的过程有所帮助;)

关于php - 协调具有动态行和列的表的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11531349/

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