`

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模板中数组循环实例

    1. **Volist标签**:ThinkPHP中还提供了`volist`标签,它是`foreach`的增强版,提供了更多的属性,如`offset`、`length`、`as`等,方便进行分页或指定循环长度。 2. **变量输出**:除了`{$key}`和`{$vo}`,ThinkPHP...

    thinkphp实现数组分页示例

    为了提高分页显示的用户体验,ThinkPHP允许开发者对分页显示的外观进行定制。例如,可以设置分页的前后链接、分页主题,以及上一页、下一页等的文本描述。通过修改配置参数,可以灵活地控制分页显示的样式,从而让...

    TP5.1扩展分页、数组分页类.zip

    数组分页则是在没有数据库查询的情况下,对已经获取到的数组数据进行分页处理。这在处理静态数据或者API返回的数组时非常有用。在TP5.1中,你可以通过以下步骤实现数组分页: 1. **计算页数**:根据数组长度和每页...

    php加载和生成json和生成xml文件,并带有ajax分页效果,带图带数据库

    以ThinkPHP框架为例,可以创建一个控制器方法来处理分页请求,使用`paginate()`函数进行分页,然后返回JSON数据供前端使用。前端通过jQuery的AJAX方法发送请求,获取分页数据并渲染到页面上。 在数据库方面,PHP...

    最新超强ThinkPHP3.0的数据库筛选标签库getlist.pdf

    在处理数据集合时,我们经常需要对结果进行索引,getlist标签库中的`mod`参数实现了这个功能,如`mod=2`,可以使得每两行数据具有相同的CSS类,方便进行样式布局。此外,`key`参数允许设置自定义的键名,如`key='...

    Thinkphp5.0框架视图view的循环标签用法示例

    通过这些循环标签,开发者可以在模板中轻松地进行数据遍历,实现列表展示、分页等常见功能。了解并熟练掌握这些标签,能有效提升ThinkPHP5.0框架下的开发效率,使得代码更加清晰和易于维护。在实际项目中,还可以...

    thinkPHP+LayUI 流加载实现功能

    它通过name方法指定要操作的数据表,field方法指定需要查询的字段,order方法指定排序方式,where方法对查询条件进行筛选,page方法实现分页查询。getNewsCount方法则是统计符合条件的数据总条数。 最后,文档对...

    TP3.2框架分页相关实现方法分析

    在某些情况下,如果只需要分页链接而不包含其他元素,可以通过_page属性来获取分页数据数组,然后自行编写相应的模板代码来显示分页链接。 5. 使用场景 在Web应用中,当处理数据量较大时,分页就变得尤为重要。例如...

    PHP+jquery+query 3级联动

    当然,实际应用中可能还需要考虑更多因素,如数据缓存、分页加载、优化性能等。此外,为了使界面更加友好,还可以添加一些视觉效果,比如使用CSS3动画来增强用户体验。 总结起来,"PHP+jquery+query 3级联动"是结合...

    php内容总结

    `select * from 22goods inner JOIN 22xqing on 22xqing.u_id = 22xqing.goods_id INNER JOIN 22user ON 22xqing.goods_id = 22goods.id limit 2 p 0` 这个SQL语句展示了如何进行多表联查,并对结果进行分页。...

    用于layui table 自定义列

    `cols`是一个二维数组,每个子数组代表表格的一行,子数组中的每个元素则代表该行的一个列。列的配置项包括`field`(字段名)、`title`(列标题)、`width`(宽度)等。通过在列配置中添加自定义函数或者HTML模板,...

    百万量级php excel快速导出代码案例

    PHP内置的`fputcsv()`函数是处理CSV文件的关键,它允许我们将数组数据写入CSV文件,每个数组元素作为一行的一个字段,字段间由逗号分隔。例如: ```php $fp = fopen('output.csv', 'w'); $data = array( array('...

    php专高一笔记.docx

    - **分页样式更改**:可以在`Thinkphp\library\think\paginator\driver`目录下自定义分页样式。 - **添加数据**:使用`create`方法添加数据,如果第二个参数为`true`,则会自动过滤掉不属于数据库字段的数据。 - **...

    解析PHP中DIRECTORY_SEPARATOR,PATH_SEPARATOR两个常量的作用

    - **ThinkPHP中使用Ajax实现无刷新分页**:在ThinkPHP框架中,利用Ajax可以实现页面内容的动态加载,而无需整个页面刷新,提高用户体验。这通常涉及JavaScript发送异步请求,后端处理请求并返回部分页面内容,前端再...

    思库教育PHP零基础培训+进阶课程+PHP项目开发实战 21G PHP零基础学习视频教程.txt

    │ ├2div如何平行显示.lxe │ ├3浮动(float)与清除(cleal)浮动.lxe │ ├4如何使用手册与表单张3作业.lxe │ ├5div布局小案例(民生银行)上.lxe │ ├6div布局小案例(民生银行)下.lxe │ ├7 CSS .lxe │ ├8经常...

Global site tag (gtag.js) - Google Analytics