MYSQL + PHP按排序顺序一次记录一条记录

时间:2012-08-30 08:20:57

标签: php mysql

所以,我有一个页面allocate.php?id=XXXXX。它基本上根据id值从数据库中的各个表中获取数据,并相应地显示它们。它还允许用户编辑和处理相关数据。

现在,与id值关联的主表也有一个字段'priority',它决定了我需要遍历表的顺序。问题是:

  1. 说我在页面'allocate.php?id = 10000'。它具有'优先'值1.

  2. 下一页应显示“优先级”值为2的详细信息。它被分配给ID为“20001”的课程。基本上,我希望下一步转到'allocate.php?id = 20001'。

  3. 那么如何在每个分配页面上提供链接到下一个最高优先级分配的id值的动态链接?

  4. 如果您需要更多信息,请输入以下表格:

    CREATE TABLE IF NOT EXISTS `course` (
      `id` varchar(11) NOT NULL,
      `name` varchar(30) NOT NULL,
      `priority` int(2) NOT NULL,
      PRIMARY KEY (`id`)
    )
    

    以下是值:

    TUSCE100101
    Course 101
    1
    
    TUSCE100102
    Course 102
    2
    
    TUSCE100201
    Course 201
    2
    
    NTUSCE100202
    Course 202
    3
    
    TUSCE200301
    Course 301
    1
    
    TUSCE200302
    Course 302
    4
    

    谢谢!

    编辑:对于那些认为问题过于简单或者我研究不够的人,我的问题是,当我检查优先级大于等于,并订购结果时,不计算当前页面,然后我可能会处于相同优先级别的课程之间切换的情况。例如:

    1. 课程101,102和103具有相同的优先级。

    2. 我在101,搜索下一个的查询以随机顺序给我102和103。我选择第一个值,比如102。

    3. 现在在102时,相同的搜索选择查询会给我101和103,第一行可能是101.所以我最后来回切换。

    4. 编辑2

      所以,我最终解决了这个问题。这是为了将来的参考。

      我定义了一个名为“visit”的附加列,以指示特定行是否已访问过。未访问时默认值为0。

      在访问每一行后,我将访问值标记为1,并根据查询选择下一个值,如“SELECT id FROM course WHERE priority> = $ currentPriority AND id!= $ currentId AND visit = 0”。

      在最后一行,当上面的选择查询不会返回任何内容时,我将所有'visit'再次设置为0,并根据基于'priority'的有序查询选择第一个。这让我无限地遍历表格。

      P.S。谢谢你的帮助。老实说,我对社区的奇怪反应感到有些失望,不过我相信我的问题并不是很清楚。对我的解决方案的反馈意见将不胜感激。

1 个答案:

答案 0 :(得分:-1)

SELECT * FROM course WHERE id!=$currentID AND priority>=$currentPriority ORDER BY priority ASC

此SQL查询将为您提供下一个项目。