`

thinkphp中对数组元素进行分页显示

阅读更多
 

PHP模块代码:

class NewsAction extends Action{

public $page = '';  //分页,当前页数

 function News(){
  $list = M("News")->field('id,title')->where("status = 5")->findAll();

  //分页 
  $list = $this->array_page($list);

  //结束

  $num = 0;

  $URL = "http://www.baidu.com/";

  $suffixName = '.html';
  foreach($list as $key=>$val){
   $num = $key + 1;
   $str .= '&nbsp;&nbsp;'.$num.").<a href='".$URL.$val['id'].$suffixName."' target='_blank'>".$val['title']."</a><br> ";
  }
  $str = preg_replace('/(.*),\s$/','\\1',$str);
  $str .= "<div class='d_page'>".$this->page."</div>";

  return $str;
 }

 

 //数组分页方法
 /**
 * array  $array 数组
 * integer $showCount 每页的记录数
 *------------------------------
 * return array 返回数组
 */
 function array_page($array,$listRows = 12,$showCount = 4){
  $p = C('VAR_PAGE');
  $url  =  $_SERVER['REQUEST_URI']."/".$p."/";
  $page  = !empty($_GET[C('VAR_PAGE')])?$_GET[C('VAR_PAGE')]:1;
        $upRow   = $page-1;
        $downRow = $page+1;  
  $linkPage = "";
  $totalPage = (int)count($array);
  $pagetotal = ceil($totalPage/$listRows); //总页数
  if($page <= ceil(($showCount)/2)){
   $minpg = 1;
   $maxpg = $showCount+1;
   if($maxpg >= $pagetotal) $maxpg = $pagetotal + 1;
  }elseif($page > ceil(($showCount)/2) && $page < ($pagetotal - ceil($showCount/2))){
   $minpg = $page - ceil(($showCount)/2) + 1;
   $maxpg = $page + ceil(($showCount)/2) + 1;
   if($maxpg >= $pagetotal) $maxpg = $pagetotal;
  }elseif($page >=$pagetotal - ceil(($showCount)/2)){
   $minpg = $pagetotal - ($showCount-1);
   if($minpg == 1) $minpg = 2;
   $maxpg = $pagetotal + 1;
  }  
  
  $linkPage .= " ".$totalPage." 条记录 ".$page."/".$pagetotal." 页 ";
  
  if($pagetotal == 1){
   $linkPage .= "&nbsp;<span class='current'>1</span>&nbsp;";
  }else{
   if($page > 1){
    $linkPage .= "&nbsp;&nbsp;<a href='javascript:void(0)' onClick=\"showpage('".$url."1');\">第一页</a>";
    $linkPage .= "&nbsp;&nbsp;<a href='javascript:void(0)' onClick=\"showpage('".$url.$upRow."');\">上一页</a>";
   }
   for($i = $minpg; $i < $maxpg; $i++){
    if($page == $i){
     $linkPage .= "&nbsp;&nbsp;<span class='current'><font color=\"#FF0000\">". $i ."</font></span>";
    }else{
     $linkPage .= "&nbsp;&nbsp;<a href='javascript:void(0)' onClick=\"showpage('".$url.$i."');\">$i</a>";
    }
   }
   if($page < $pagetotal){
    $linkPage .= "&nbsp;&nbsp;<a href='javascript:void(0)' onClick=\"showpage('".$url.$downRow."');\">下一页</a>";
    $linkPage .= "&nbsp;&nbsp;<a href='javascript:void(0)' onClick=\"showpage('".$url.$pagetotal."');\">最后一页</a>";
   }
  }   
  
  if($listRows < $totalPage) {
   if($page <= 1 || empty($page)) {
    $page = 0;
   } else {
    $page = intval($page) - 1;
   }
   $array = array_slice($array,$page*$listRows,$listRows,true);
  }
  $this->page = $linkPage;
  if(1 == $pagetotal) $this->page = '';
  return $array;  
 } 

}

 

前台Html代码:

<html>

<head>

<script type="text/javascript" charset="utf-8" src="__PUBLIC__/js/artDialog/artDialog.min.js"></script>

</head>

<body>

<script language="javascript" type="text/javascript">

//分页跳转

function showpage(url){
 var testDialog;
 testDialog = dialog('正在加载中...');
 $.get(url,null,function(data){
  //$("#con").append(data);
  testDialog.close();
  $("#con").html(data);
 });
}

//提示缓冲框

function dialog(msg){
 var testDialog;
 testDialog = art.dialog({
  lock: false,
  title:'',
  id:'loaddialog',
  content:'<font color="#ff0000">'+msg+'</font>',
  width:220
 });
 return testDialog;
}

</script>

<div id="con"></div>

</body>

</html>

 

0
1
分享到:
评论

相关推荐

    thinkPHP中多维数组的遍历方法

    主要介绍了thinkPHP中多维数组的遍历方法,以简单实例形式分析了thinkPHP中foreach语句的使用技巧,需要的朋友可以参考下

    ThinkPHP模板中数组循环实例

    本文实例讲述了ThinkPHP模板中数组循环的实现方法。分享给大家供大家参考。具体实现方法如下: ThinkPHP开发过程中经常用到输出数组在模板中使用,一般select出来的数据都是二维数组,我们在模板中用volist标签就...

    thinkphp实现数组分页示例

    在thinkphp的框架下实现分页。公司的网站基于Thinkphp框架,一直久闻thinkphp的大名,终于有机会实战了。thinkphp是MVC架构的,MVC对于任何ITers来说都不陌生,模型(model)-视图(view)-控制器(controller)。他将...

    thinkPHP简单遍历数组方法分析

    本文实例分析了thinkPHP简单遍历数组方法。分享给大家供大家参考,具体如下: 有如下数组: array( array( 'id'=&gt;1, 'username'=&gt;'mgckid', 'sex'=&gt;1 ) array( 'id'=&gt;2, 'username'=&gt;'yezi', 'sex'=&gt;0 ) ...

    thinkphp+ajax无刷新分页

    thinkphp+ajax无刷新分页,方便快捷,简单易行

    ThinkPhp3.1.3仿百度分页类

    ThinkPhp仿百度分页类,在ThinkPhp3.1.3下测试通过 Author: 泡泡堂 &lt;46445280@qq.com&gt; 参照 ThinkPhp3.1.3 及 ThinkPhp3.2.1护展包下的 Page.class.php 说明:在ThinkPhp3.1.3下测试通过,其它版本未做测试 ...

    thinkphp ajax分页

    thinkphp ajax分页,该代码实现无刷新分页,可带参数。代码拓展性强,简单,易用。代码已经调试,可以直接使用。

    thinkphp框架表单数组实现图片批量上传功能示例

    本文实例讲述了thinkphp框架表单数组实现图片批量上传功能。分享给大家供大家参考,具体如下: 今天做一个表单数组实现图片批量上传,js不是很会,在网上找了资料改的,html页面如下: [removed] var i = 1; ...

    PHP基于数组实现的分页函数实例

    关于数组的分页函数,用数组进行分页的好处是可以方便的进行联合多表查询,只需要将查询的结果放在数组中就可以了以下是数组分页的函数,函数page_array用于数组的分页,函数show_array用于分页函数的操作及显示,需要...

    thinkphp分页

    thinkphp分页

    thinkphp5.1cms后台

    新手,框架熟悉人员

    thinkphp视图分页Page类分页功能代码下载

    thinkphp视图分页Page类分页功能代码下载 利用viewmodel模型多表分页功能 利用D封装类。进行分页代码

    ThinkPHP查询返回简单字段数组的方法

    本文实例讲述了ThinkPHP查询返回简单字段数组的方法,是ThinkPHP程序设计中一个很实用的功能。具体方法如下: 通常来说使用select语句。返回的都是结构较复杂的字段数组。如以下是一个简单的查询: $map['parentid'...

    Thinkphp将二维数组变为标签适用的一维数组方法总结

    本文实例总结了Thinkphp将二维数组变为标签适用的一维数组方法。分享给大家供大家参考。具体实现方法如下: 方法一: 复制代码 代码如下:$projectList=arr1tag($projectList,array(”,’请选择’),’project_name’)...

Global site tag (gtag.js) - Google Analytics