Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何编写PHP代码一次遍历一条记录?_Php_Mysql_Pagination - Fatal编程技术网

如何编写PHP代码一次遍历一条记录?

如何编写PHP代码一次遍历一条记录?,php,mysql,pagination,Php,Mysql,Pagination,所以我对php/mysql还不熟悉。我正在使用一个非常小的数据库(只有10条记录的单个表)进行测试,因为我只是在尝试学习 我在php页面上显示以下结果:从mytable where city=“atlanta”中选择* 它起作用了。。结果显示在我的页面上。现在,我想知道,我怎么能在这个记录下放一个链接,上面写着“显示下一个结果”,点击它,它就会在我的数据库中弹出一个包含下一个结果的新页面 这需要一个完整的分页脚本,还是有一个简单的方法 谢谢 您正在查看的是php中的分页。web上有很多教程。您可

所以我对php/mysql还不熟悉。我正在使用一个非常小的数据库(只有10条记录的单个表)进行测试,因为我只是在尝试学习

我在php页面上显示以下结果:从mytable where city=“atlanta”中选择*

它起作用了。。结果显示在我的页面上。现在,我想知道,我怎么能在这个记录下放一个链接,上面写着“显示下一个结果”,点击它,它就会在我的数据库中弹出一个包含下一个结果的新页面

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


谢谢

您正在查看的是php中的分页。web上有很多教程。您可以看到我能想到的最简单的方法(如果您不想使用完整的分页脚本)是获取数组中的行id(可能使用
array\u keys()
),跟踪当前活动的键(通过$\u get),然后使用一些简单的逻辑来确定id数组中的上一个和下一个值,并在构建导航链接时使用它们。

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

<a href="index.php?id=<?php echo ($id + 1) ?>" />
不要忘记绑定整数,这样就不会得到无效的结果。在您的情况下,请确保
$id
不低于
0
或高于
9
。简单地说

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

    if($id > 9) $id = 9;
注意这里的
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; ?>

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

$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
现在,我想知道,我怎么能在这个记录下放置一个链接,上面写着“显示下一个结果”,然后点击它

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

比如说 你的网页是:

选自:亚特兰大

Link=>Next Entry(这里您必须提供下一个条件。您的真实条件是city=“atlanta”所在的位置,所以接下来您必须知道)

正确的方法是在本例中创建sql问题

$sql = "SELECT * FROM mytable WHERE id='<?=$_POST['id']?>'";
$sql=“从mytable中选择*,其中id=”;
这样你就可以打印链接了

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


下一个结果是什么意思?另一个城市(例如圣迭戈)或选择的所有亚特兰大返回的下一个城市?如果是后者,你如何从一个城市开始?您能在更新中发布php脚本和数据库结构吗?
$id=(int)$\u GET['id']从GEt转换整数是一件好事,特别是对于初学者来说,这是一个很好的解决方案,但我强烈建议使用PDO(我更喜欢)或mysqli,而不是即将弃用的mysql扩展。使用预先准备好的陈述是一种很好的做法——你开始得越早越好(初学者问题)。在我的测试中,我不得不更加努力地完成这项工作,但是。。很值得。我从中学到了很多。很好!非常感谢您的精彩示例和解释@regilero肯定忘了考虑浮点输入,你完全正确。很高兴我们能提供帮助,希望您的PHP学习能走得更远。正如middus和我所建议的,一定要研究PDO或mysqli,因为尽管基本mysql对初学者来说很好,但它存在巨大的安全问题,很快就会被弃用。谢谢!今晚就搞定了!哇!你们很好!:)多谢。我现在要玩所有的反应。。。因为我的目标就是学习。。我想知道你在这里写了什么。我会喊回来的。再次感谢!这个像个冠军!哇!非常感谢!!我现在要查看其他解决方案。。。但我不敢相信你做到了这几行。非常感谢。非常感谢。其他人让我走了,这给了我需要的“下一个链接”信息。
$sql = "SELECT * FROM mytable WHERE id='<?=$_POST['id']?>'";
<a href='?id=<?=db["id"]+1?>'>Next Entry</a>