您的位置:首页 > 编程语言 > PHP开发

php分页功能实现

2013-11-24 11:55 405 查看
上星期工作中,遇到要处理一段分页的代码!以前是写的很熟练的,可能是懒散的太久了!感觉忘的差不多了。

有的知识就是太久不用也会忘记的很快啊!所以经常复习一下以前的知识也是很重要的。所以特地整理出一下分页代码!



效果如上图;在发表框点一下弹出一个框,首先判断用户是否登录,没有登录就弹出登录框,已登录就弹出输入框,输入留言内容,姓名和手机号。

当你输入好内容后会在下面显示你的留言内容,前三个为用户最新的留言排序,从第四个起按点赞的数量进行排序。

<!--视图层-->
<?php
$pageIndex = isset($_GET['p'])?$_GET['p']:0;
echo "<script type=\"text/javascript\">var pageindex=".$pageIndex." </script>";
?>
<script type="text/javascript" src="/jquery.js"></script>
<script type="text/javascript">
function loadMore(){
pageindex = pageindex || 0;
$.ajax({
url:'http://www.*****.com/****/wishingwall?pageindex='+pageindex+'&callback=?',
type:'GET',
dataType:'jsonp',
success:function(d){
if(d.code == 200){
if(d.font == ''){
return;
}else{
var _html = '';
if (pageindex == 0) {
var _len=0;
if(d.font.length>3){
_len=4;
}else{
_len=d.font.length;
}
for(var j = 0; j<_len; j++){
var _d = d.font;
_html += '<div class="wallCenter" ><div class="items"><div class="style'+random(1, 5)+'">';
_html += '<div class="content">' +_d[j].content +'</div><span class="jianjue"></span><p class="author">';
_html += '<span class="zanImg" style="cursor:pointer"></span><span class="username">' +_d[j].username + '</span>';
_html += '<span class="zanColor">(<span id="'+_d[j].id+'" class="praisenumer'+_d[j].id+'">' +_d[j].praisenumer +'</span>赞)</span></p></div></div></div>';
}
}
if(d.data != '') {
var _len=0;
if(d.data.length>5 && pageindex==0){
_len=5;
}else{
_len=8;
}
for(var j = 0; j<_len; j++){
var _s = d.data;
_html += '<div class="wallCenter" ><div class="items"><div class="style'+random(1, 5)+'">';
_html += '<div class="content">' +_s[j].content +'</div><span class="jianjue"></span><p class="author">';
_html += '<span class="zanImg" style="cursor:pointer"></span><span class="username">' +_s[j].username + '</span>';
_html += '<span class="zanColor">(<span id="'+_s[j].id+'" class="praisenumer'+_s[j].id+'">' +_s[j].praisenumer +'</span>赞)</span></p></div></div></div>';
}
}
$(".wallWrap").text('');         <!--把留言写入-->
$(".wallWrap").html(_html).masonry({itemSelector: '.wallCenter'});
var numberthis = parseInt(d.page) + 1;
thisPage(d.count, numberthis);
$(".zanImg").each(function(index, elm){
var $elm = $(elm);
$elm.click(function(){
var thisid = $elm.parent('p').find('span.zanColor span').attr('id');
$.ajax({
url:'http://www.*****.com/****/addpraisenumer/'+thisid+'?callback=?',
type:'GET',
dataType:'jsonp',
success:function(d){
if(d.code == 200){
$(".praisenumer"+thisid).text(d.praisenumer);
} else {
return;
}
}
});
})
})

}
}else{
return;
}
}
});
}
function thisPage(count, curPage) {
count = count || 1;
count = Number(count); <!--定义记录数-->
curPage = curPage || 1;
curPage = Number(curPage);  <!--当前页-->
var per = 8;
per = Number(per);
var showPages = 0;
showPages = Number(showPages);
var showEnd = 0;
showEnd = Number(showEnd);
if (count%per > 0) {        <!--定义总的页数-->
var pages = (parseInt(count/per) + 1);
} else {
var pages = parseInt(count/per);
}
var str = '<span class="loadPage">'+curPage+'/'+ pages +' 页</span>';
str += '<span class="totalPage"> 共 '+ pages +' 页</span>'
if(curPage != 1){
str += '<span class="firstPage" data-page="1"><a href="http://*****.*****.com/thanksgiving?p=0#content">首页</a></span>'
}
if(curPage - 1 > 0){
str += '<span class="prevPage" data-page="'+(curPage-1)+'"><a href="http://*****.*****.com/thanksgiving?p='+ (curPage-2) +'#content">上一页</a></span>'
}
if(pages <= 5){
showPages = 1;
showEnd = pages;
}else if(pages - curPage >= 4){
showPages = curPage;
showEnd = curPage+4;
}else if(pages - curPage < 4){
showPages = pages - 4;
showEnd = pages;
}
for(var i=showPages; i<=showEnd; i++){
if( i == curPage){
str += '<a class="page_trigger page_cur" data-page="'+i+'" onclick="javascript:;">'+ i +'</a>'
}else{
str += '<a class="page_trigger"  data-page="'+i+'" href="http://*****.*****.com/thanksgiving?p='+(i-1)+'#content">'+ i +'</a>'
}
}
if(curPage + 1 <= pages){
str += '</span><span class="nextPage" data-page="'+(curPage+1)+'"><a href="http://*****.*****.com/thanksgiving?p='+ curPage +'#content">下一页</a></span>';
}
if(curPage!=pages){
str += '<span class="lastPage" data-page="'+pages+'"><a href="http://*****.*****.com/thanksgiving?p='+ (pages-1) +'#content">尾页</a></span>';
}
$('.page_box').eq(0).html(str);}

</script>


<!--控制层-->
<?php
// 留言板显示
public function action_wishingwall()
{
header('Content-Type: application/x-javascript');
$callback = isset( $_GET[ 'callback' ] ) ? $_GET[ 'callback' ] : 'callback';
$pageIndex = Arr::get($_GET, 'pageindex', 0);
$offset = 0;
try {

$font = DB::select('id', 'content', 'username', 'phone', 'userid', 'usernumber',
'praisenumer', 'modefied', 'created')
->from('tmp_***')
->order_by('praisenumer', 'desc')
->limit(3)
->fetch_all();     //根据点赞倒序查询
$list = ' (';
foreach($font as $v) {
$list.= $v['id'].',';
}
$list.='0)';
$pageSize = 8;
if($pageIndex == 0) {
$pageSize = 8;
} else {
$offset = 8+($pageIndex-1)*8;
}

$rows = DB::select('id', 'content', 'username', 'phone', 'userid', 'usernumber',
'praisenumer', 'modefied', 'created')
->from('tmp_*****')
->where('id', DB::expr('not in'), DB::expr($list))
->order_by('created', 'desc')
->limit($pageSize)
->offset($offset)
->fetch_all();   //根据时间倒序查询
$count = DB::select('id')
->from('tmp_*****')
->count_all();
$data = array(
'code' 	=> 200,
'msg'	=> 'Success',
'page'  => $pageIndex,
'count' => $count,
'font'  => $font,
'data' 	=> $rows,
);
} catch (Exception $e) {
$data = array(
'code' 	=> 3000003,
'msg'	=> '查询异常',
'data' 	=> $rows,
);
}
echo $callback.'('.json_encode($data).')';
exit;
}

// 点赞加
public function action_addpraisenumer($id)
{
header('Content-Type: application/x-javascript');
$callback = isset( $_GET[ 'callback' ] ) ? $_GET[ 'callback' ] : 'callback';
if (isset($id) && $id) {
// 得到系统唯一session_id
$session_id = session_id();
$result = array(1, time());
if (!$this->cacheFilter($session_id, "praise", $result, 10)) {
$data = array(
'code' 	=> 3000004,
'msg'	=> '10秒之内无法重复提交',
);
} else {
DB::update('tmp_*****')
->set(array('praisenumer' => DB::expr(' praisenumer+1 ')))
->where('id', '=', $id)
->execute();
$praisenumer = DB::select('praisenumer')
->from('tmp_*****')
->where('id', '=', $id)
->fetch_one();
$data = array(
'code' 	=> 200,
'praisenumer' => $praisenumer,
'msg'	=> '成功',
);
}
} else {
$data = array(
'code' 	=> 3000003,
'msg'	=> '非法的操作',
);
}
echo $callback.'('.json_encode($data).')';
exit;
}

// 新增留言板
public function action_addwishingwall()
{
header('Content-Type: application/x-javascript');
$callback = isset( $_GET[ 'callback' ] ) ? $_GET[ 'callback' ] : 'callback';
$content = Arr::get($_GET, 'content', '');
$username = Arr::get($_GET, 'username', '');
$phone = Arr::get($_GET, 'phone', '');
if (empty($content)) {
$data = array(
'code' 	=> 3000001,
'msg'	=> '留言内容不能为空',
);
} else {
$data = array(
'content' => $content,
'username' => $username,
'phone' => $phone,
'praisenumer' => 0,
'modefied' => time(),
'created' => time()
);
try {
DB::insert('tmp_*****', array_keys($data))
->values(array_values($data))
->execute();
$data = array(
'code' 	=> 200,
'msg'	=> '成功',
);
} catch (Exception $e) {
$data = array(
'code' 	=> 3000002,
'msg'	=> '新增失败',
);
}
}
echo $callback.'('.json_encode($data).')';
exit;
}
?>


这一段为php的分页代码。临时在本地服务器上测试的,效果图为简单的这样!



<?php
header('content-type:text/html;charset-gbk');
?>
<html>
<head>
<title>分页</title>
</head>
<body>
<table border="1" width="500">
<tr>
<td>编号 </td>
<td>姓名</td>
<td>年龄</td>
<td>del</td>
</tr>
<?php
$pagesize=5;   //每页显示5条
$pageno=1;     //当前页默认为1
if(!empty($_GET['pageno'])){
$pageno=$_GET['pageno'];
}
$offset=($pageno-1)*5;   //偏移量
$link=mysql_connect('127.0.0.1','root','');
mysql_query('set names gbk');
mysql_select_db('test');
$sql="select * from t_user";
$rs=mysql_query($sql);
//求出最总记录
$totalrows=mysql_num_rows($rs);
//求出总页数
$pagetotal=ceil($totalrows/$pagesize);
//求1到总页数范围的元素的数组
$rows=range(1,$pagetotal);
$sql="select * from t_user limit {$offset},{$pagesize}";
$rs=mysql_query($sql);
while($row=mysql_fetch_array($rs)){
echo "<tr>";
echo "<td>{$row['id']}</td>";
echo "<td>{$row['name']}</td>";
echo "<td>{$row['age']}</td>";
echo "<td>DEL</td>";
echo "</tr>";
}
?>
<tr>
<td colspan=4>
<a href="page.php?pageno=1">首页</a>

<?php
if($pageno<=1){
echo "上一页";
}else{
?>
<a href="page.php?pageno=<?php echo$pageno-1;?>">上一页</a>
<?php
}

?>

<?php
foreach($rows as $p){
if($pageno == $p){
echo $p;
}else{
echo "<a href='page.php?pageno={$p}'>{$p}</a>";
}
}
?>

<?php
if($pageno>=$pagetotal){
echo "下一页";
}else{
?>
<a href="page.php?pageno=<?php echo$pageno+1;?>">下一页</a>
<?php
}
?>
<a href="page.php?pageno=<?php echo $pagetotal;?>">尾页</a>
</td>
</tr>
</table>
</body>
</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php