【问题标题】:CodeIgniter custom pagination helperCodeIgniter 自定义分页助手
【发布时间】:2013-01-09 23:46:48
【问题描述】:

我想在 CodeIgniter 中创建自己的助手,但我不知道出了什么问题。我将复制我的帮助文件,并在我的其他文件中初始化此帮助文件并尝试回显,但没有任何显示。

 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

     if (!function_exists('pagination'))

{

    function prikazi($per_page, $page, $url, $total)
    {
        $CI =& get_instance();
           $adjacents = "2";


    $page = ($page == 0 ? 1 : $page); 
    $start = ($page - 1) * $per_page;                              

    $prev = $page - 1;                         
    $next = $page + 1;
    $lastpage = ceil($total/$per_page);
    $lpm1 = $lastpage - 1;

    $pagination = "";
    if($lastpage > 1)
    {  
       $pagination .= "<ul class='pagination'>";
           $pagination .= "<li class='details'>Page $page of $lastpage</li>";
        if ($lastpage < 7 + ($adjacents * 2))
        {  
            for ($counter = 1; $counter <= $lastpage; $counter++)
            {
                if ($counter == $page)
                    $pagination.= "<li><a class='current'>$counter</a></li>";
                else
                    $pagination.= "<li><a href='{$url}$counter'>$counter</a></li>";                   
            }
        }
        elseif($lastpage > 5 + ($adjacents * 2))
        {
            if($page < 1 + ($adjacents * 2))    
            {
                for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
                {
                    if ($counter == $page)
                        $pagination.= "<li><a class='current'>$counter</a></li>";
                    else
                        $pagination.= "<li><a href='{$url}$counter'>$counter</a></li>";                   
                }
                $pagination.= "<li class='dot'>...</li>";
                $pagination.= "<li><a href='{$url}$lpm1'>$lpm1</a></li>";
                $pagination.= "<li><a href='{$url}$lastpage'>$lastpage</a></li>";     
            }
            elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2))
            {
                $pagination.= "<li><a href='{$url}1'>1</a></li>";
                $pagination.= "<li><a href='{$url}2'>2</a></li>";
                $pagination.= "<li class='dot'>...</li>";
                for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++)
                {
                    if ($counter == $page)
                        $pagination.= "<li><a class='current'>$counter</a></li>";
                    else
                        $pagination.= "<li><a href='{$url}$counter'>$counter</a></li>";                   
                }
                $pagination.= "<li class='dot'>..</li>";
                $pagination.= "<li><a href='{$url}$lpm1'>$lpm1</a></li>";
                $pagination.= "<li><a href='{$url}$lastpage'>$lastpage</a></li>";     
            }
            else
            {
                $pagination.= "<li><a href='{$url}1'>1</a></li>";
                $pagination.= "<li><a href='{$url}2'>2</a></li>";
                $pagination.= "<li class='dot'>..</li>";
                for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++)
                {
                    if ($counter == $page)
                        $pagination.= "<li><a class='current'>$counter</a></li>";
                    else
                        $pagination.= "<li><a href='{$url}$counter'>$counter</a></li>";                   
                }
            }
        }

        if ($page < $counter - 1){
            $pagination.= "<li><a href='{$url}$next'>Next</a></li>";
           // $pagination.= "<li><a href='{$url}$lastpage'>Last</a></li>";
        }else{
            //$pagination.= "<li><a class='current'>Next</a></li>";
           // $pagination.= "<li><a class='current'>Last</a></li>";
        }
        $pagination.= "</ul>\n";     
    }          
        return $pagination;
    }
}

在我的另一个文件中,我尝试像这样回显:

  $this->load->helper('pagination');
    echo prikazi($bypage,$page,$link,$total); 

【问题讨论】:

  • 调用函数时使用什么值?
  • &bypage = 5, $page=1; if(isset($_GET['page']) && $_GET['page']!=''){ $page=$_GET['page']; } , $link = "some string" 和 $total = to mysqlnumrows, if' 这就是你的意思?

标签: php codeigniter pagination


【解决方案1】:

当你看时

$lastpage = ceil($total/$per_page);
$lpm1 = $lastpage - 1;

$pagination = "";
if($lastpage > 1)
{  
...
} else
return $pagination;

可能归结为 $lastpage 为 0,因此返回一个空字符串。

你可能想看看

 if (!function_exists('pagination'))

{

function prikazi($per_page, $page, $url, $total)
{

也是因为函数名不匹配

【讨论】:

  • 我预计 $total(代表行数)为 0。也许是一个奇怪的问题,但是为什么不使用分页助手呢?
  • 是的,你帮忙谢谢,我不喜欢它,我没有完全控制,但是谢谢你:)
猜你喜欢
  • 2014-02-08
  • 1970-01-01
  • 2012-03-28
  • 2016-11-23
  • 1970-01-01
  • 2016-05-24
  • 2020-04-18
  • 1970-01-01
  • 2020-07-29
相关资源
最近更新 更多