【问题标题】:PHP, looping through query results in SQLPHP,在SQL中循环查询结果
【发布时间】:2015-11-25 22:01:12
【问题描述】:

我目前无法为我想要的结果创建一个循环。

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

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

从结果可以看出,有属性: 中
标题
学分
哎呀

我已按 ayr 降序订购。我正在尝试创建一个循环,该循环将贯穿此查询的返回并打印出每一行,直到当前年份结束为止。几乎对同一年份的所有行进行分组,例如'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(); 
    } 

提前致谢。

【问题讨论】:

  • 我也不确定,什么?
  • 你有代码要发吗?
  • 尝试添加一些 PHP。到目前为止,您尝试过什么?
  • 您根本没有很好地描述日期部分。它在你的脑海里很好。但这里不是任何地方

标签: php mysql


【解决方案1】:

假设您对整个页面最多提交一个查询。就像我在 cmets 中所说的那样

我会有一个变量,叫它$curYear。从垃圾开始 细绳。在您的循环中,如果当前年份与 $curYear,在您的输出中创建一个新段,但不管更新 $curYear 变量

这并不是要干扰您现有的源代码(那么多)。它只是提醒您注意年份变化(无论是年份/任期)的哨兵。

所以它以一些垃圾值开始,例如“797fsdf*”

现在在你的时间里,请记住,你有所有年份来自该结果集的所有年份。

按照我在上面那个粉色块中所说的比较变量$curYear

$row['ayr']

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

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

棘手的部分是,如果您正在制作 html 表格,如果您不在第一年,则必须关闭前一张表格(上一年)

【讨论】:

  • 嗨@drew,你能检查一下我在Q中更新的PHP代码,特别是while循环部分。我添加了一个额外的 && 条件,我认为这就是你想要告诉我的?
  • 并非如此。您是否尝试将其输出到 html 表中。一年一张?
  • 是的,这正是我想要实现的目标 :)
  • 啊,非常感谢您的宝贵时间!我明天去读一读!非常感谢
  • @Drew Maybe jonlovesmath ;-) 我自己有点喜欢“数学”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-09
  • 2012-09-09
  • 2012-05-26
  • 2015-07-23
相关资源
最近更新 更多