喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

[北京]代朋友公司招聘PHP高级程序员多名

上一主题 下一主题
 14  1/2  1  2  > 
     
标题: PHP+AJAX实现简单分页  
 
xiacong
新手上路
Rank: 1



UID 71758
精华 0
积分 3
帖子 1
金钱 3 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-4-16
状态 离线
PHP+AJAX实现简单分页

对于PHP的分页,已经有很多前辈创造了很好的方法,我就不再多讲,我主要讲讲利用AJAX来实现一种简单的方便的分页方法,希望能起到抛砖引玉的作用~~

这个实例的重点需要灵活运用AJAX,难点在于中文的编码,在这些方面我积累了一些小小的经验,希望能和大家分享;

AJAX+PHP分页的基本原理就是在数据库一定的位置上取一定量的数据,然后利用AJAX进行调用.先看看PHP分页部分:

<?php
header
("Content-type: text/html;charset=GBK");//输出编码,避免中文乱码
$conn mysql_connect('localhost','root','password') or die ('Not connected : ' mysql_error());
mysql_select_db('web'$conn) or die ('Cannot use foo : ' mysql_error());
//mysql_query("set character set gbk");//可选,解决Mysql中文乱码

$p $_POST["p"];//获取页面编号

$result_t=mysql_query("select * from `tablename`");
$total=mysql_num_rows($result_t);

$s 20;//定义每页显示数量
$t floor($total/$s);//总页数

if(!$p||$p<0){$p 0;}
if(
$p>$t){$p $t;}
$pp $s*$p;

$query="select * from `tablename` order by `id` desc limit $pp,$s";//取出相应的数据
$result=mysql_query($query);

while (
$row mysql_fetch_array($resultMYSQL_BOTH)) {
echo 
"<p>".$row['id']."</p>";
}

echo 
"共有".$total."条记录<a href='javascript:dopages(".($p-1).")'>上一页</a> | <a href='javascript:dopages(".($p+1).")'>下一页</a>跳转至<input type='text' id='pgs' />页<input value='跳转' type='button' onClick='dopages(".'document.getElementById("pgs").value-1);>';
?>
这样就通过简单的方法实现了分页功能,接下来就需要利用AJAX进行调用了:

function dopages(p){       
        var posts = "p="+p;
        var url = ajaxurl('pages.php');
        function func(){
            getResult('dopages');
        };
        sendRequest(url,posts,func);
}
function ajaxurl(adDiv){
        var baseurl = "http://ad.nie.netease.com/" + adDiv;
        return baseurl;       
        }
function getajax(){
        var xmlhttp = false;
        if(window.ActiveXObject){
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        else if(window.XMLHttpRequest){
                xmlhttp = new XMLHttpRequest();
        }
        return xmlhttp;
        }
function sendRequest(url,posts,func){
        ajax = getajax();
        ajax.onreadystatechange = func;
        ajax.open('POST', url, true);
        ajax.setRequestHeader("Content-Length",posts.length);
        ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
        ajax.send(posts);       
}
/*------------Try-------------*/
var Try = {
  these: function() {
    var returnValue;
    for (var i = 0; i < arguments.length; i++) {
      var lambda = arguments[i];
      try {
        returnValue = lambda();
        break;
      } catch (e) {}
    }
    return returnValue;
  }
}

function tryCollectGarbage(){
    return Try.these(
        function() {return CollectGarbage();},
        function() {return false;}
        );
}
function getResult(adDiv,num){
        if (ajax.readyState < 4) {
                document.getElementById("loading").style.visibility = "visible";
        }
        else if (ajax.readyState == 4) {
                document.getElementById("loading").style.visibility = "hidden";
                if (ajax.status == 200){
                var result = ajax.responseText;
                if(adDiv=="dopages"){
                        document.getElementById('xpages').innerHTML = result;
                        }
        }
                else {
                        alert("出错");
                        delete ajax;
                        tryCollectGarbage();//垃圾回收
                }
        }
}       
在这个简单的实例中为什么要用ajaxurl,sendRequest,getResult函数封装而不是直接写出代码呢?呵呵,因为我的这个PHP+AJAX的分页程序是一个综合系统中的一部分,我只是讲了其中的这一段,所以原汁原味的保留了,相信大家也可以看懂.其实另外一个重要原因是希望可以传输一些代码重用的知识,而且这种方法易于维护,特别是对于大型系统来说,可以节省很多时间.

本人文字表述能力有限,仅供参考,希望大家真正的理解而不是copy代码到实际应用中.

[ 本帖最后由 xiacong 于 2006-8-24 01:59 PM 编辑 ]
2006-8-24 01:53 PM#1
查看资料  发短消息  QQ  顶部
 
qh663
版主
Rank: 7Rank: 7Rank: 7
中级会员


UID 30020
精华 0
积分 546
帖子 580
金钱 546 喜悦币
威望 0
人脉 0
阅读权限 100
注册 2004-7-13
来自 河源
状态 离线
[推荐阅读] 和我一样的菜鸟很多,发现很多人在问环境配置,我转发一个教程
有个小错误,将
$result_t=mysql_query("select * from `tablename`");
$total=mysql_num_rows($result_t);
改为
$result_t=mysql_query("select count(*)  from `tablename`");
$total=mysql_fetch_array($result_t);
$total=$total[0];
避免数据量多时服务器被拖死




五百多篇PHP学习资料
喜悦村BLOG
php团队接兼职项目QQ:80031807
PHP群:768844
2006-8-24 10:04 PM#2
查看资料  访问主页  Blog  发短消息  QQ  顶部
 
she (she)
新手上路
Rank: 1
初级会员



UID 29433
精华 0
积分 37
帖子 128
金钱 37 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2004-6-17
状态 离线
[推荐阅读] 企业建站引发的一丝思考与考虑
把服务器的任务交给 数据库来完成 嘎嘎 QH663  你是偶得偶像
2006-8-25 02:34 PM#3
查看资料  发短消息  顶部
 
风卷残云
中级会员
Rank: 3Rank: 3
老会员



UID 63269
精华 0
积分 366
帖子 380
金钱 366 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2005-2-19
来自 江苏
状态 离线
[推荐阅读] 请教:关于使用GD旋转透明图
既然都用AJAX了,分页处理还用PHP分页?
2006-8-26 02:56 PM#4
查看资料  访问主页  发短消息  QQ  顶部
 
tl84 (tl84)
乞丐

初级会员



UID 49872
精华 0
积分 -1
帖子 20
金钱 -1 喜悦币
威望 0
人脉 0
阅读权限 1
注册 2004-11-15
状态 离线
[推荐阅读] Discuz的管理员密码忘了,我在数据库重新导入一个,可是有安全提问,怎样去掉
好东东!~~~~~~~~~~~
2006-8-29 02:29 PM#5
查看资料  发短消息  QQ  顶部
 
llix
新手上路
Rank: 1



UID 78976
精华 0
积分 1
帖子 1
金钱 1 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-8-24
状态 离线
[推荐阅读] 上海招聘phper,兄弟们来捧场阿
$result_t=mysql_query("select count(id)  from `tablename`");
这样应该更好吧.避免用*,也不必选择全部字段.
2006-9-15 03:19 PM#6
查看资料  发短消息  顶部
 
LuckLrj (中国php中的爱因斯坦)
版主
Rank: 7Rank: 7Rank: 7
老会员


UID 64836
精华 0
积分 2308
帖子 3101
金钱 2308 喜悦币
威望 0
人脉 0
阅读权限 100
注册 2005-6-19
状态 离线
[推荐阅读] MYSQL的問題
$result_t=mysql_query("select count(id)  from `tablename`");
$result_t=mysql_query("select count(*)  from `tablename`");

据说是第二种效率高哦。。。没测试过 有兴趣的朋友可测试下。




学习,工作累了,请访问我的小站,娱乐一下。http://www.52sunny.net
2006-9-15 03:34 PM#7
查看资料  Blog  发短消息  顶部
 
游戏人间
版主
Rank: 7Rank: 7Rank: 7
☞风云山庄大少爷☜


UID 62639
精华 2
积分 14475
帖子 7392
金钱 14328 喜悦币
威望 20
人脉 127
阅读权限 100
注册 2004-12-21
来自 广西人在北京
状态 离线
[推荐阅读] 招聘PHPER1名


QUOTE:
原帖由 LuckLrj 于 2006-9-15 15:34 发表
$result_t=mysql_query("select count(id)  from `tablename`");
$result_t=mysql_query("select count(*)  from `tablename`");

据说是第二种效率高哦。。。没测试过 有兴趣的朋友可测试 ...
没空测试,不过我听人家说过自行车比汽车污染环境更严重.有时候还真他妈的是这样




 
群号:6025396/6025252/19520091(广西PHP交流/PHP高级编程/算法交流) 寧可在嘗試中失敗,也不在保守中成功! 不為失敗找理由,只為成功找方法! 饿踢Blog
 
2006-9-18 01:18 AM#8
查看资料  访问主页  Blog  发短消息  顶部
 
放弃思考
中级会员
Rank: 3Rank: 3
老会员



UID 31149
精华 0
积分 389
帖子 390
金钱 389 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2004-9-14
状态 离线
[推荐阅读] 网站改版,急聘PHP开发人员


QUOTE:
原帖由 LuckLrj 于 2006-9-15 03:34 PM 发表
$result_t=mysql_query("select count(id)  from `tablename`");
$result_t=mysql_query("select count(*)  from `tablename`");

据说是第二种效率高哦。。。没测试过 有兴趣的朋友可测试 ...
不是吧。难道我们都是自作聪明,我都用第一种的。55555




blog:  http://j.cublog.cn
2006-9-18 04:39 PM#9
查看资料  发短消息  顶部
 
chinahuman (chinahuman)
注册会员
Rank: 2
一般会员



UID 30414
精华 0
积分 113
帖子 152
金钱 113 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2004-8-9
状态 离线
[推荐阅读] js取src问题


QUOTE:
原帖由 LuckLrj 于 2006-9-15 03:34 PM 发表
$result_t=mysql_query("select count(id)  from `tablename`");
$result_t=mysql_query("select count(*)  from `tablename`");

据说是第二种效率高哦。。。没测试过 有兴趣的朋友可测试 ...
确实是第二种耗费时间少  百思不得其解  困惑一年之久
2006-9-20 04:55 PM#10
查看资料  Blog  发短消息  顶部
 14  1/2  1  2  > 
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.028838 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP