我目前在尝试为我想要的结果创建一个循环时遇到了麻烦。
我目前正在创建一张学生记录卡,其中存储了不同学生(假学生)的大量数据。
我创建了一个查询,它返回了我需要的相关数据(参见图1,phpmyadmin)
SELECT mods.mid, mtitle, credits, enrl.ayr
FROM stud, smod, mods, enrl
WHERE stud.sid = '154279' AND stud.sid = smod.sid
AND smod.mid = mods.mid AND stud.sid = enrl.sid
ORDER BY `enrl`.`ayr` DESC
正如您在结果中所看到的,有以下属性:
中期
mtitle
学分
艾尔
我已经按照命令降序了。我正在尝试创建一个循环,它将遍历此查询的返回并打印出每一行,直到当前年份结束。几乎将所有行分组到同一年份,例如' 2001/02'进入一个子表,然后我可以命名和打印。
正如您在学生记录页面的第二张照片中所看到的,我需要能够打印一年的所有记录,然后为下一个现有年份创建一个新标题并打印所有包含行的标题。
{编辑} PHP代码:
$query = "SELECT mods.mid, mtitle, credits, enrl.ayr
FROM stud, smod, mods, enrl
WHERE stud.sid = '154279' AND stud.sid = smod.sid AND smod.mid = mods.mid AND stud.sid = enrl.sid
ORDER BY enrl.ayr DESC
";
$scap = '';
$curYear = $row['ayr'];
if($result = $link->query($query)) {
while ($row = $result->fetch_assoc() && $row['ayr'] == $curYear) {
$scap .= "<table id=\"test\" style=\"width:100%\">
<tr>
<td> " . $row['mid'] . " </td> <td> " . $row['mtitle'] . "</td> <td> " . $row['credits'] . " <td> " . $row['ayr'] . "</td>
</tr>
</table>";
}$result->free();
}
提前致谢。
答案 0 :(得分:1)
我们假设您为整个页面提交了一个查询最大值。就像我在评论中说的那样
我会有一个变量,称之为$ curYear。从一些垃圾开始吧 串。在你的循环中,如果cur年份不同于 $ curYear,在输出中创建一个新段,但无论如何更新 $ curYear变量
这并不意味着干扰您现有的源代码(那么多)。它只是一个提醒你一年变化的哨兵(无论年/年)。
所以它从一些垃圾值开始,比如&#34; 797fsdf *&#34;
现在,在你的时间里,记住,你有多年来从这个结果集进入所有年份。
在上面的粉色块中执行我所说的比较变量$curYear
到
$row['ayr']
当这两个值不同时,是时候做你想要的任何HTML处理了(创建一个新的html表,一个新的div,谁在乎)。我们称之为分离事物。
无论如何,输出行后,请确保已将$curYear
设置为$row['ayr']
。为什么这很重要?因为下一个循环你想知道你是否需要进行分离。
棘手的部分是如果你正在做html表,如果你不在第一年就必须关闭上一张表(去年)