为查询结果建立向后/向前按钮


Posted in PHP onOctober 09, 2006

最近在Support Forums上有很多问题都是关于如何为一个搜索结果制作象"向后 1 2 3 4 5 向前"样子 的链接。我希望下面的脚本可以帮助你,在你的搜索结果页面中加入这种功能。这个例子是专为MySQL所写 的,但是对于其它的SQL引擎也可以很容易地适应。

因为每种应用都是不同的,这样我使用了一些通用的语句进行MySQL查询处理。TABLE名应该替换成你的 实际表名。YOUR CONDITIONAL HERE应该替换成你的where 条件,并且WHATEVER应该替换成你希望对结果进 行排序的字段(如果你的应用需要降序排列,不要忘记加上DESC)。

<?php

$limit=20; // 返回的行
$numresults=mysql_query("select * from TABLE where YOUR CONDITIONAL HERE order by WHATEVER");
$numrows=mysql_num_rows($numresults);

// 接着判断是否offset已经传给脚本了,如果没有设为0
if (empty($offset)) {
    $offset=0;
}

// 取结果
$result=mysql_query("select id,name,phone ".
    "from TABLE where YOUR CONDITIONAL HERE ".
    "order by WHATEVER limit $offset,$limit");

// 现在可以显示返回结果了
while ($data=mysql_fetch_array($result)) {
    // 在此处包含如你所愿的显示结果代码
}

// 接着我们需要生成其它结果的链接

if ($offset==1) { // 如果offset为0,则忽略PREV链接
    $prevoffset=$offset-20;
    print "<a href="$PHP_SELF?offset=$prevoffset">PREV</a>   n";
}

// 计算需要链接的页面数
$pages=intval($numrows/$limit);

// 如果除后没有余数,$pages 现在包含需要页面的整数值
if ($numrows%$limit) {
    // 如果有余数那么增加一页
    $pages++;
}

for ($i=1;$i<=$pages;$i++) { // 循环
    $newoffset=$limit*($i-1);
    print "<a href="$PHP_SELF?offset=$newoffset">$i</a>   n";
}

// 检查是否为最后一页
if (!(($offset/$limit)==$pages) && $pages!=1) {
    // 如果不是下一页,则给出向后链接
    $newoffset=$offset+$limit;
    print "<a href="$PHP_SELF?offset=$newoffset">NEXT</a><p>n";
}

?>  

这些对你来说可能有些用。当然,你可能想要使HTML的输出更干净一些...  

而且,请注意在$PHP_SELF后的链接只包含了$offset。如果你需要为查询的where条件传递参数的话, 你也需也需要把这些补在上面。  

PHP 相关文章推荐
PHP 配置open_basedir 让各虚拟站点独立运行
Nov 12 PHP
安装ImageMagick出现error while loading shared libraries的解决方法
Sep 23 PHP
yii实现图片上传及缩略图生成的方法
Dec 04 PHP
jQuery获取json后使用zy_tmpl生成下拉菜单
Mar 27 PHP
smarty高级特性之对象的使用方法
Dec 25 PHP
调用WordPress函数统计文章访问量及PHP原生计数器的实现
Mar 21 PHP
PHP实现清除MySQL死连接的方法
Jul 23 PHP
微信网页授权(OAuth2.0) PHP 源码简单实现
Aug 29 PHP
PHP页面输出时js设置input框的选中值
Sep 30 PHP
Yii CDBCriteria常用方法实例小结
Jan 19 PHP
PHP+Redis 消息队列 实现高并发下注册人数统计的实例
Jan 29 PHP
ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解
Apr 02 PHP
投票管理程序
Oct 09 #PHP
用PHP和ACCESS写聊天室(九)
Oct 09 #PHP
用PHP和ACCESS写聊天室(八)
Oct 09 #PHP
用PHP和ACCESS写聊天室(七)
Oct 09 #PHP
一个简单实现多条件查询的例子
Oct 09 #PHP
用PHP和ACCESS写聊天室(十)
Oct 09 #PHP
php生成EXCEL的东东
Oct 09 #PHP
You might like
DOTA2 无惧惊涛骇浪 昆卡大型水友攻略
2020/04/20 DOTA
PHP网页游戏学习之Xnova(ogame)源码解读(四)
2014/06/23 PHP
自编函数解决pathinfo()函数处理中文问题
2014/11/03 PHP
PHP计算百度地图两个GPS坐标之间距离的方法
2015/01/09 PHP
全面解读PHP的Yii框架中的日志功能
2016/03/17 PHP
laravel中短信发送验证码的实现方法
2018/04/25 PHP
php使用socket调用http和smtp协议实例小结
2019/07/26 PHP
asp批量修改记录的代码
2008/06/25 Javascript
动态为事件添加js代码示例
2009/02/15 Javascript
三级下拉菜单的js实现代码
2011/05/23 Javascript
了不起的node.js读书笔记之node.js中的特性
2014/12/22 Javascript
javascript实现相同事件名称,不同命名空间的调用方法
2015/06/26 Javascript
js实现正则匹配中文标点符号的方法
2015/12/23 Javascript
JS定时器实现数值从0到10来回变化
2016/12/09 Javascript
Extjs让combobox写起来简洁又漂亮
2017/01/05 Javascript
jQuery给表格添加分页效果
2017/03/02 Javascript
基于jQuery ztree实现表格风格的树状结构
2018/08/31 jQuery
个人小程序接入支付解决方案
2019/05/23 Javascript
vue实现滑动到底部加载更多效果
2020/10/27 Javascript
tracking.js实现前端人脸识别功能
2020/04/16 Javascript
js实现弹幕飞机效果
2020/08/27 Javascript
用Nodejs实现在终端中炒股的实现
2020/10/18 NodeJs
[01:01:24]LGD vs Fnatic 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[51:06]DOTA2-DPC中国联赛 正赛 Elephant vs Aster BO3 第二场 1月26日
2021/03/11 DOTA
Python threading多线程编程实例
2014/09/18 Python
详解Python迭代和迭代器
2016/03/28 Python
python切片及sys.argv[]用法详解
2018/05/25 Python
Python使用pickle模块储存对象操作示例
2018/08/15 Python
pyqt5 实现在别的窗口弹出进度条
2019/06/18 Python
实例详解Python模块decimal
2019/06/26 Python
pytorch标签转onehot形式实例
2020/01/02 Python
浅谈tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意点
2020/06/08 Python
在pycharm中文件取消用 pytest模式打开的操作
2020/09/01 Python
致200米运动员广播稿
2014/02/06 职场文书
教师文明餐桌光盘行动倡议书
2015/04/28 职场文书
毕业证明模板
2015/06/19 职场文书