如何编写PHP代码一次一个地记录?

时间:2011-07-22 16:30:35

标签: php mysql pagination

所以我是php / mysql的新手。我正在测试一个非常小的数据库(只有10个记录的单个表),因为我只是想学习。

我在php页面上显示以下结果:select * from mytable where city =“atlanta”

它有效..结果显示在我的页面上。现在,我想知道,我怎么能在这条记录下显示“显示下一个结果”的链接,点击它,它只是在我的数据库中拉出一个新页面,其中包含下一个结果?

这需要一个完整的分页脚本还是有一个简单的方法?

谢谢!

5 个答案:

答案 0 :(得分:5)

最简单的方法是包含一个整数$_GET变量,即行号+ 1。

<a href="index.php?id=<?php echo ($id + 1) ?>" />

然后,对于PHP脚本,您需要获取值,或使用默认值(0)(如果未提供)。

<?php
    if(!isset($_GET['id']))
        $id = 0;
    else
        $id = $_GET['id'];
?>

不要忘记绑定您的整数,这样就无法获得无效结果。在您的情况下,请确保$id不低于0或高于9。像

这样简单的东西
    if($id < 0) $id = 0;

    if($id > 9) $id = 9;

应该有效。这是在上一个代码示例之后立即执行的。

然后,对于您的查询,只需执行

$sql = "select * from mytable where city = 'atlanta' LIMIT {$id}, 1";

注意这里的LIMIT子句有两个参数。第一个,您当前的$id数字告诉查询从哪里开始查找结果集。第二个参数告诉它应该从一开始就有多少结果。在这种情况下,我们总是想要一个,所以我们将其保留为1

当然,你应该对这个查询进行参数化,但是因为听起来你只是学习SQL,所以这不是什么大问题。如果这是一个公共网站,你需要这样做。

您还可以使用mysql_num_rows或PDO等效项来获取适用行的总数,然后确定$id + 1是否大于总行数(意味着您在最后一条记录中) ,如果是,则不显示指向下一条记录的链接。

完整代码

<?php
    if(!isset($_GET['id']))
        $id = 0;
    else
        $id = $_GET['id'];

    if($id < 0) $id = 0;

    if($id > 9) $id = 9;

    $sql = "select * from mytable where city = 'atlanta' LIMIT {$id}, 1";

    $result = mysql_fetch_assoc($sql);
?>

Display your result here

<?php if( ( $id + 1 ) < mysql_num_rows($result) ) :

<a href="index.php?id=<?php echo ($id + 1) ?>" />

<?php endif; ?>

答案 1 :(得分:3)

你正在寻找的是php中的分页。网上有很多教程。here是你可以看到的

答案 2 :(得分:3)

整个分页脚本? :)不,就像这样

$items_per_page = 1;
$page = max( 1, (int) $_GET['page'] );
$offset = ($page-1) * $items_per_page;
$limit = $items_per_page;

$sql = "SELECT * FROM `table` LIMIT {$offset}, {$limit}"

现在只需使用

调用您的脚本
http://localhost/index.php?page=1
http://localhost/index.php?page=2
http://localhost/index.php?page=3
etc

答案 3 :(得分:2)

  

现在,我想知道,如何在此记录中显示“显示下一个结果”并点击它的链接

您必须为链接提供下一个数据库条件键值。

例如 您的页面是:

从db中选择:atlanta

Link =&gt;下一个条目(这里你必须提供下一个条件。你的真实情况是city =“atlanta”所以接下来你必须知道)

正确的方法是在此示例中创建SQL问题

$sql = "SELECT * FROM mytable WHERE id='<?=$_POST['id']?>'";

以这种方式你可以打印链接

<a href='?id=<?=db["id"]+1?>'>Next Entry</a>

答案 4 :(得分:1)

我能想到的最简单的方法(如果你不想使用一个完整的分页脚本)是将你的行的ID放在一个数组中(可能使用array_keys()),跟踪当前活动的key(通过$ _GET)然后使用一些简单的逻辑来确定id数组中的上一个和下一个值是什么,并在构建导航链接时使用它们。