BLOG ENTRY

PHPでPEARを使わないPager(ページャー)その2[PHP]

php

PHPでPEARを使わないPager(ページ送り機能)です。
前にも書いたけど、たぶんこっちの方がよろしいかと。前のは総件数が少ないときの動きが変だったような気がする。。

※HTMLファイルでの埋め込み方(使い方)などは前のとほぼ一緒です

<?php

class Pager
{
    /*
    * Copyright (c) 2009 QUALL  quall.net
    * Licensed under the MIT License:
    * http://www.opensource.org/licenses/mit-license.php
    *
    * @args
    *  $total_count(int) : 全件数
    *  $curpage(int) : 現在のページ
    *  $perpage(int) : 1ページの最大表示件数
    *  $range(int) :  ページャーの表示個数
    *
    * @return(array)
    *  $total_pages(int) : 総ページ数
    *  $curpage(int) : 今のページ
    *  $start_page(int)   :表示開始ページ
    *  $end_page(int)     :表示最後ページ
    *  $prev(int)    : 前のページ
    *  $next(int)    : 次のページ
    *  $offset(int)  : select開始ポイント
    *  $limit(int)   : select取得件数
    *
    */
    function getPager($total_count = NULL, $curpage = 1, $perpage = 20, $range = 5)
    {
        //total_pages
        $total_pages = ceil($total_count / $perpage);

        //range
        $range = ($total_pages < $range)? $total_pages : $range;

        //start_page
        if ($curpage >= ceil($range / 2)) {
            $start_page = $curpage - floor($range / 2);
        }
        $start_page = ($start_page < 1)? 1 : $start_page;   // 1未満は1にする

        //end_page
        $end_page   = $start_page + $range - 1;
        if ($curpage > $total_pages - ceil($range / 2)) {    //最後らへんのページとか
            $end_page   = $total_pages;
            $start_page = $end_page - $range + 1;
        }

        //prev
        if ($curpage > $start_page) {
            $prev = $curpage - 1;
        } else {
            $prev = NULL;
        }

        //next
        if ($curpage < $end_page) {
            $next = $curpage + 1;
        } else {
            $next = NULL;
        }

        //offset
        $offset = ceil($curpage - 1) * $perpage;

        //limit
        $limit = ($total_count < $perpage)? $total_count : $perpage;

        return array(
                    'total_pages' => $total_pages,
                    'curpage'     => $curpage,
                    'range'       => $range,
                    'start_page'  => $start_page,
                    'end_page'    => $end_page,
                    'prev'        => $prev,
                    'next'        => $next,
                    'offset'      => $offset,
                    'limit'       => $limit
                    );
    }
}

終わり。

関連記事

  1. CakePHP1.2上で外部サイトのRSSを取得&表示[CakePHP]
  2. [PHP]Fatal error: Cannot use string offset as an array in
  3. ページの短縮URLを貼り付けたTwitter投稿をしてもらう
  4. 外部複数ブログのRSS情報をWordPress上で表示する[WordPress]
  5. 文字列を、1行上限★バイトで改行させて、上限★行まで表示する[PHP]
  • name:PHPでPEARを使わないページャー(pager)[PHP] | Web&MUSICブログ QUALL
  • date:2009/04/17
  • [...] ・・・ですけど、新しいの載せたんでたぶんそちらの方がいいです。。 [...]

  • type:ピンバック [ ]

  • name:PHPでPEARを使わないページャー(pager)[PHP] | Web&MUSICブログ QUALL
  • date:2009/09/01
  • [...] ・・・ですけど、新しいコード載せたんでたぶんそちらの方がいいです。。 下のコードだとたぶん件数が少ないときに正しく動かないっぽいので。。 [...]

  • type:ピンバック [ ]

    WRITE COMMENT


    (required)


    (required)


    (required)

    MENU