php 是否有任何可以轻松实现的简单分页框架?

Is there any simple pagination framework for php which can be easily implementable?

我的数据库中的表很少,想对页面上的几个表实现分页。 我在每个页面中编写了自己的分页代码,只要它是 required。 是否有任何可以轻松实现的框架工作,例如,当我将查询传递给方法或 class 时,它必须使用适当的 pagination.Would 生成 ui 任何人都建议我任何框架工作做这个任务。

编辑: 我已经指定我编写了自己的分页代码,这与 @veerendra 给出的一个解决方案非常接近,但是对于 60 个不同页面的分页,我需要编写该逻辑。 我要求一个框架来减轻我编写动态分页代码的负担,它应该在 php 而不是 jquery 或 javascript 中。 由于它们的逻辑将驻留在客户端,因此无法对大型数据集进行操作。

在下面试试这个 link 以分页显示数据:

http://code.tutsplus.com/tutorials/how-to-paginate-data-with-php--net-2928

检查 datatables 它是一个很棒的 js table 框架,它允许你 实施 ajax 个调用。

您可以使用 jquery 分页,它既简单又快速。请按照我深入描述的以下步骤进行

获取包含插件和 CSS 主题的 zip here

第 1 步: 连同 JQuery,在您的页面中包含 jquery.simplePagination.js:

<script type="text/javascript" src="path_to/jquery.js"></script>
<script type="text/javascript" src="path_to/jquery.simplePagination.js"></script>

JQuery 建议使用 1.7.2 或更高版本。旧版本也可以,但我没有测试过。

第 2 步: 可选 - 包含具有 3 个默认主题的 CSS 文件

<link type="text/css" rel="stylesheet" href="path_to/simplePagination.css"/>

如果跳过此步骤,您将需要定义自己的样式或使用 Bootstrap

步骤 3: 在分页占位符上调用函数:

$(function() {
    $(selector).pagination({
        items: 100,
        itemsOnPage: 10,
        cssStyle: 'light-theme'
    });
});

如有必要,您可以直接通过"pages"参数指定页数,而不是"items"和"itemsOnPage",插件使用它们来自动计算页数页数。

可用选项

items 整数默认值:1 将用于计算页面的项目总数。

itemsOnPage 整数默认值:1 每页显示的项目数。

pages Integer Optional 如果指定,items 和 itemsOnPage 将不会用于计算页数。

displayedPages 整数默认值:5 导航时应显示多少页码。

允许的最小值:3(上一个、当前和下一个) edges Integer 默认值:2 在分页的 beginning/ending 处可见多少页码。

currentPage 整数默认值:1 初始化后select立即编辑哪个页面。

hrefTextPrefix String Default: "#page-" 用于构建 href 属性的字符串,添加在页码之前。

hrefTextSuffix String Default: empty string 用于构建 href 属性的另一个字符串,添加在页码之后。

prevText 字符串默认值:"Prev" 要在上一个按钮上显示的文本。

nextText 字符串默认值:"Next" 要在下一个按钮上显示的文本。

labelMap 数组默认值:空数组将用于呈现分页项目的标签集合,替换数字。 cssStyle String 默认值:"light-theme" CSS 主题的 class。

selectOnClick 布尔值默认值:true 如果您不想 select 单击后立即打开页面,则设置为 false。

onPageClick(pageNumber, event) Function Optional 页面被点击时调用的函数。

页码和事件是可选参数。 onInit Function Optional 分页初始化时调用的函数。

可用方法

select页面 - Select 基于页码的页面。

$(function() {
    $(selector).pagination('selectPage', pageNumber);
});

上一页 - Select上一页。

$(function() {
    $(selector).pagination('prevPage');
});

下一页 - Select下一页。

$(function() {
    $(selector).pagination('nextPage');
});

getPagesCount - Returns 总页数。

$(function() {
    $(selector).pagination('getPagesCount');
});

getCurrentPage - Returns 当前页码。

$(function() {
    $(selector).pagination('getCurrentPage');
});

disable - 禁用分页功能。

$(function() {
    $(selector).pagination('disable');
});

启用 - 在之前禁用后启用分页。

$(function() {
    $(selector).pagination('enable');
});

destroy - 视觉上破坏分页,保留所有现有设置。

$(function() {
    $(selector).pagination('destroy');
});

redraw - 使用现有设置再次绘制分页。 (例如,在你销毁分页后很有用)

$(function() {
    $(selector).pagination('redraw');
});

updateItems - 允许动态更改分页呈现的项目数

$(function() {
    $(selector).pagination('updateItems', 100);
});

updateItemsOnPage - 允许动态更改每个页面上呈现的项目数

$(function() {
    $(selector).pagination('updateItemsOnPage', 20);
});

drawPage - 将页码作为参数并将 "currentPage" 值设置为给定的页码并绘制分页

$(function() {
    $(selector).pagination('drawPage', 5);
});

下面是名为 paging.inc.php

的文件

你只需要将 where class 传递给查询,只需要获取计数并将计数变量命名为与文件中相同的名称,然后你将需要设置每页记录和其他参数.

在此之后,您需要触发查询,该查询将从文件中获取带有 limit 变量的记录,这可用于对列表中的列进行排序。

<?
//CODE FOR PAGING 
if(!isset($num_totrec))  $num_totrec = $db_recs[0]["tot"];

   //$num_totrec SHOULD BE PASSED
if(!isset($pg_limit) && empty($pg_limit))
   $pg_limit    = $PAGE_LIMIT; //page limit

if(!isset($rec_limit) && empty($rec_limit))
   $rec_limit   = $REC_LIMIT;  //record limit

if($_REQUEST["TotalRecords"]!="")
    $rec_limit  = $_REQUEST["TotalRecords"];

$num_tmp    = 0;
$var_flg    = "0";
$var_limit  = "";
$num_limit  = 0; 
$var_filter = "";

if($_GET[start]=='')    {$_GET[start] = 1;$start=1;}
if(($_GET[start]-1)*$rec_limit > $num_totrec)
{
    $_GET[start]=1;
    $start=1;
}

if(isset($tempvar) && !empty($tempvar))
{
    if($stat==1 && $tempvar == "true") $stat=0;
    else if($stat==0 && $tempvar == "true") $stat=1;
    else $stat=1;
}

$sort_order = ($stat==1)? $asc_order:$desc_order;
$sort_img = "<img src='$sort_order' border='0'>";

$var_filter = ""; 
$var_filter = "&stat=$stat";

//CODE FOR COLUMN SHOULD SORT ASCENDING/DESCENDING - END

   //CHANGE THIS CODE WITH SUITABLE VARIABLES

    if(isset($ptype)) $var_filter.= "&ptype=".$ptype."&action=Section";

    foreach ($_GET as $key=>$val)
    {
        if($key != "stat" && $key != "start" && $key != "nstart" && $key != "tempvar" && $key != "sorton")
        {
            if(is_array($val))
            {
                for($k=0;$k<count($val);$k++)
                {
                    $var_filter .= '&'.$key.'[]=' . $val[$k];
                }
            }else if($key == "keyword"){
                $var_filter.= "&$key=". stripcslashes($val);
            }
            else
                $var_filter.= "&$key=$val";
        }
    }


    foreach ($_POST as $key=>$val)
    {
        if($key != "stat" && $key != "start" && $key != "nstart" && $key != "tempvar" && $key != "sorton")
        {
            if(is_array($val))
            {
                for($k=0;$k<count($val);$k++)
                {
                    $var_filter .= '&'.$key.'[]=' . $val[$k];
                }
            }else if($key == "keyword"){
                $var_filter.= "&$key=". stripcslashes($val);
            }
            else
                $var_filter.= "&$key=$val";
        }
    }// end

      if(isset($month_val) && $month_val != "") $var_filter.= "&month_val=$month_val";
      if(isset($year_val) && $year_val != "") $var_filter.= "&year_val=$year_val";
      if(isset($action) && $action != "") $var_filter.= "&action=$action";

   //SET Extra querystring variables to pass from here
   //$var_extra can be attached with the links for this purpose

   if(isset($start)){
       $num_limit = ($start-1)*$rec_limit;
       $var_limit = " LIMIT $num_limit,$rec_limit"; 
   }else $var_limit = " LIMIT 0,$rec_limit";

   if(!isset($nstart)){
       if($num_totrec){ //if recs exists!!
           if($rec_limit>$num_totrec){
               $num_pgs = 1;
               $var_flg = "2";
           }else{
               $num_loopctr =0;
               $num_loopctr = ceil($num_totrec/$rec_limit);
               if($pg_limit>$num_loopctr){
                  $num_pgs = $num_loopctr;
                  $var_flg = "2";
               }else{
                  $num_pgs = $pg_limit;
                  if($num_totrec<=($rec_limit*$pg_limit)) $var_flg = "2";
           else $var_flg = "1";
               }
           }
           $var_link = "";
           $var_prevlink ="";
           //if sorting is set
           $var_sort_link="";
           if(isset($sorton)) $var_sort_link = "&sorton=$sorton";

           $var_prevlink ="<font size=1 color=black>&nbsp;&nbsp;|";
           for($i=1;$i<=$num_pgs;$i++)
           {
              IF($i==1)
                $var_link.= "<font size=1 color=red>$i</font>&nbsp;|&nbsp;";
            else

              $var_link.= "<a href=\"$var_self$PHP_SELF?nstart=1&start=$i$var_filter$var_sort_link$var_extra\"><font size=1 color=black>$i</font></a>&nbsp;|&nbsp;";
           }
           if($var_flag !="0" and $var_flg!="2"){ $var_link .= "&nbsp;>&nbsp;<a href=\"$var_self$PHP_SELF?nstart=2&start=$i$var_filter$var_filter$var_sort_link$var_extra\"><font size=1 color=black>next</font></a>"; }else {$var_link .= " </font>";
           }
           $page_link = "";
           $page_link = "$var_prevlink $var_link";
       }else{ 
         //IF NO RECORDS EXISTS!!
         $var_link="";
       }
   }else{ //if nstart is set
       if($num_totrec){ //if recs exists!!
           $num_loopctr =0;
           $num_rem_rec = 0;
           $num_rem_rec = ($num_totrec-(($nstart-1)*$rec_limit*$pg_limit));
           $num_loopctr = ceil($num_rem_rec/$rec_limit);
           $num_tmp = $rec_limit*$nstart*$pg_limit;
           if($num_tmp>$num_totrec){
               $num_pgs = $num_loopctr;
               $var_flg = "2";
           }else{
               $num_pgs = $pg_limit;
               if($num_totrec==($nstart*$rec_limit*$pg_limit)) $var_flg = "2";
               else $var_flg = "1";
           }
           $var_link = "";
           $var_prevlink ="";
           //if sorting is set
           $var_sort_link="";
           if(isset($sorton)) $var_sort_link = "&sorton=$sorton";
           $num_prevnstart = 0;
           $num_prevstart = 0;
           $num_prevnstart = $nstart-1;
           $num_prevstart = ($nstart*$pg_limit)-$pg_limit;
           $num_tmp = ($num_totrec/$rec_limit);
           if($nstart<=1) $var_prevlink ="<font size=1 color=black>&nbsp;|";
           else $var_prevlink ="<a href=\"$var_self$PHP_SELF?nstart=$num_prevnstart&start=$num_prevstart$var_filter$var_sort_link$var_extra\"><font size=1 color=black>prev</font></a>&nbsp;<font size=1 color=black><&nbsp;|</font>";  
           for($i=1;$i<=$num_pgs;$i++)
           {
              $num_start =  $num_prevstart+$i;
              $num_nstart = $nstart+1;

              IF($start==$num_start)
                $var_link.= "<font size=1 color=red>$num_start</font>&nbsp;|&nbsp;";
              else
                 $var_link.= "<a href=\"$var_self$PHP_SELF?nstart=$nstart&start=$num_start$var_filter$var_sort_link$var_extra\"><font size=1 color=black>$num_start</font></a>&nbsp;|&nbsp;";

           }
           $num_start++;
           if($var_flag!="0" and $var_flg!="2"){ $var_link .= "&nbsp;><a href=\"$var_self$PHP_SELF?nstart=$num_nstart&start=$num_start$var_filter$var_sort_link$var_extra\"><font size=1 color=black>next</font></a></font>"; }else {$var_link .= "<font size=1 color=black>&nbsp;</font>";
           }
           $page_link = "";
           $page_link = "$var_prevlink $var_link";
       }else{ 
         //IF NO RECORDS EXISTS!!
         $var_link="";
       }
  }

//if set the paging variables
if(isset($nstart)) $var_pgs = "&nstart=$nstart&start=$start"; //attach this with the sorting links  
//CODE FOR PAGING ENDS OVER HERE
?>

在下面发布示例代码,以便您了解我在上面的描述中所说的内容。

这只是我如何使用它的示例。

$where_arr = array();

if($keyword !=""){
    $where_arr[] ="$option like '".$keyword."%'";
}

if(count($where_arr)>0)
    $where_clause = " WHERE ".implode(" AND ", $where_arr);
else
    $where_clause = '';


$table_clause = " from admin";

$sql = "select count(iAdminId) as tot ".$table_clause.$where_clause;
$rs_sql = $sqlObj->select($sql);
$num_totrec = $rs_sql[0]['tot'];

include("gen_pagingmsg.inc.php");

if($sorton != "")
{
    switch ($sorton)
    {   
        case "1":
            $sort = "vUserName";
            if($stat!=1) $sort .= " DESC";
            break;
        case "2":
            ($stat==1)? $sort = "vFirstName, vLastName" : $sort = "vFirstName desc, vLastName DESC";
            break;
        case "3":
            $sort = "vEmail";
            if($stat!=1) $sort .= " DESC";
            break;
        case "4":
            $sort = "dLastAccess";
            if($stat!=1) $sort .= " DESC";
            break;
        case "5":
            $sort = "iTotLogin";
            if($stat!=1) $sort .= " DESC";
            break;
        case "6":
            $sort = "eStatus";
            if($stat!=1) $sort .= " DESC";
            break;
        default:
            $sort ="vUserName";
    }
}else {
    $sort ="vUserName";
}

$sql = "select iAdminId, concat(vFirstName, ' ', vLastName) as vName, vUserName, vEmail, dLastAccess, iTotLogin, eStatus ".$table_clause.$where_clause." order by ".$sort.$var_limit;
//echo "<br>".$sql;
$db_sql = $sqlObj->select($sql);

下面是gen_pagingmsg.inc.php

<?
# =========================================================================
# Paging Paging comes from this File. Don't Remove this below line.
# =========================================================================
//echo $num_totrec;
//ECHO $rec_limit ;
if($ADMIN_SHOWPAGING_TOP=="N" && $ADMIN_SHOWPAGING_BOTTOM=="N")
    $rec_limit=$num_totrec;

include("paging.inc.php");
# =========================================================================

//$keyword = stripcslashes($keyword);

if($keyword!="")
{ 
    $var_msg="Your search for #keyword# has found #num_totrec# matches:";
    $var_msg=str_replace("#keyword#","<font color=#000000>$keyword</font>",$var_msg);
    $var_msg=str_replace("#num_totrec#","<font color=#000000>$num_totrec</font>",$var_msg);
}
if(!isset($start))
    $start = 1;
$num_limit = ($start-1)*$rec_limit;
$startrec = $num_limit;
$lastrec = $startrec + $rec_limit;
$startrec = $startrec + 1;
if($lastrec > $num_totrec)
    $lastrec = $num_totrec;
if($num_totrec > 0 )
{
    $recmsg = "Showing ".$startrec." - ".$lastrec." Records Of ".$num_totrec;
}
else
{
    $recmsg="Sorry !... No Records Found";
}
?>

此文件主要为您提供消息和分页 html,您可以将其保留在列表的上方或下方