使用按钮使用php迭代mysql结果集

时间:2011-05-10 13:14:08

标签: php mysql html

嗨,人们作为一个新的网络编程我有一个场景,我需要一些帮助。

我试图在页面上设置一个“下一个”按钮,它将以迭代的方式从数据库中提取下一个问题。我直接将php值传递给按钮作为文本。

目前我可以抓取mysql结果集并将它们全部打印出来,或者我可以抓住一行并返回其字段,但是使用下一个按钮获取一个,然后是另一个按钮的策略是什么,依此类推。

$result = mysql_query("SELECT * FROM $DB_QUEST_NAME ORDER BY pk_Id DESC;") or die(mysql_error());

    while ($row = mysql_fetch_array($result)){

    echo $pk_id = $row[0] . "<br>";
    echo $question = $row[1].  "<br>";
    echo $answera = $row[2]  .  "<br>";
    echo $answerb = $row[3] . "<br>";
    echo $answerc = $row[4] . "<br>";
    echo $answerd = $row[5] . "<br><br>";

    break;  
    }

在标记中包括getNextPoll.php(上面),它首先抓取第一个结果,将它们显示为按钮。但随后每次点击我想得到下一个,然后是下一个,依此类推。我知道如何设置按钮文本,我也知道服务器端客户端责任,但作为我对这种类型的开发相当新,其背后的方法很棘手。

任何反馈都将不胜感激。谢谢。

4 个答案:

答案 0 :(得分:2)

我相信你正在寻找MySQL's "offset"。这允许您运行... limit 1 offset 0之类的查询以返回第一个结果,然后... limit 1 offset 1返回第二个结果...依此类推。

(你真的不需要“偏移0”,因为这是默认值,但是 - 只是试图说明这一点。)

修改

如果您将网页变量存储在网址中,请执行以下操作:www.myPage.com/questions.php?pg=2

然后你可以这样做:

$numPerPage = 1;
$pg = $_GET['pg'];
$nxtPage = $pg++;
$offset = ($numPerPage * $pg) - 1;
$question = mysql_query("SELECT * FROM questions LIMIT " . $numPerPage . 
" OFFSET " . $offset);

然后,你是“下一个”链接可能是:

<a href="questions.php?pg=<?=$nxtPage?>">NEXT</a>

答案 1 :(得分:2)

您可以使用LIMIT进行查询

获得前10个结果的示例:

"SELECT * FROM $DB_QUEST_NAME ORDER BY pk_Id DESC LIMIT 1,10";

接下来只需乘以页码:

$page_number = isset($_GET['page']) ? $_GET['page'] : 1;
$results_per_page = 10;
$end = $results_per_page * $page_number;
start = $end - $results_per_page;

"SELECT * FROM $DB_QUEST_NAME ORDER BY pk_Id DESC LIMIT {$start},{$end}";

这只是一个基本的例子。对于实际实现,请使用offset,正如其他人所解释的那样

答案 2 :(得分:1)

您的$DB_QUEST_NAME表格还应该有一个ord列,您可以在其中设置问题顺序(我不会将其基于主键:如果您希望稍后添加新问题,那么该怎么办?一个?)

然后next按钮应查询$ord + 1(如果有)。

答案 3 :(得分:0)

在查询中使用“偏移”和“限制”。检查:http://www.petefreitag.com/item/451.cfm以获取一个简单示例。