所以我是php / mysql的新手。我正在测试一个非常小的数据库(只有10个记录的单个表),因为我只是想学习。
我在php页面上显示以下结果:select * from mytable where city =“atlanta”
它有效..结果显示在我的页面上。现在,我想知道,我怎么能在这条记录下显示“显示下一个结果”的链接,点击它,它只是在我的数据库中拉出一个新页面,其中包含下一个结果?
这需要一个完整的分页脚本还是有一个简单的方法?
谢谢!
答案 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数组中的上一个和下一个值是什么,并在构建导航链接时使用它们。