PHP,在SQL中循环查询结果

时间:2015-11-25 22:01:12

标签: php mysql

我目前在尝试为我想要的结果创建一个循环时遇到了麻烦。

我目前正在创建一张学生记录卡,其中存储了不同学生(假学生)的大量数据。

我创建了一个查询,它返回了我需要的相关数据(参见图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(); 
    } 

提前致谢。

Picture 1 Picture 2

1 个答案:

答案 0 :(得分:1)

我们假设您为整个页面提交了一个查询最大值。就像我在评论中说的那样

  

我会有一个变量,称之为$ curYear。从一些垃圾开始吧   串。在你的循环中,如果cur年份不同于   $ curYear,在输出中创建一个新段,但无论如何更新   $ curYear变量

这并不意味着干扰您现有的源代码(那么多)。它只是一个提醒你一年变化的哨兵(无论年/年)。

所以它从一些垃圾值开始,比如&#34; 797fsdf *&#34;

现在,在你的时间里,记住,你有多年来从这个结果集进入所有年份。

在上面的粉色块中执行我所说的比较变量$curYear

$row['ayr']

当这两个值不同时,是时候做你想要的任何HTML处理了(创建一个新的html表,一个新的div,谁在乎)。我们称之为分离事物。

无论如何,输出行后,请确保已将$curYear设置为$row['ayr']。为什么这很重要?因为下一个循环你想知道你是否需要进行分离。

棘手的部分是如果你正在做html表,如果你不在第一年就必须关闭上一张表(去年)