ホームページ > php教程 > php手册 > ページングナビゲーションクラス

ページングナビゲーションクラス

WBOY
リリース: 2016-06-21 09:12:16
オリジナル
999 人が閲覧しました

ページネーション

// +------------------------------------------ ------------------------+
// | PHP バージョン 4 |
// +------------------------------------------ ------------------------+
// |著作権 (c) 1997-2002 PHP グループ |
// +------------------------------------- ------------------------------------+
// |このソース ファイルには、PHP ライセンスのバージョン 2.02 が適用されます。 |
// |これは、このパッケージの LICENSE ファイルにバンドルされており、 |
// |ワールドワイドウェブから |
// | http://www.php.net/license/2_02.txt。                                 |
// | PHP ライセンスのコピーを受け取っておらず、 |
// |ワールドワイド ウェブを通じて入手するには、メモを |
// | までお送りください。 License@php.net なので、コピーをすぐに郵送できます。               |
// +------------------------------------------ ------------------------+
// |著者: Richard Heyes                          |
// +------------------------------------------ ------------------------+

/**
* Pager クラス
*
* データセットのページングを処理します。使用方法については、提供されている example.php を参照してください。
*
*/

クラスポケベル {

/**
* 現在のページ
* @var integer
    * /
var $_currentPage;

/**
* ページごとのアイテム数
* @var integer
    */
var $_perPage;

/**
* 総ページ数
* @var integer
    */
var $_totalPages;

/**
* アイテムデータ。数値インデックス付き配列...
* @var array
    */
var $_itemData ;

/**
* データ内の項目の合計数
* @var integer
    */
var $_totalItems;

/**
* このクラスによって生成されたページデータ
* @var array
    */
var $_pageData;

/**
* Constructor
*
* オブジェクトを設定し、項目の総数を計算します。
*
* @param $params パラメーターの連想配列 これには以下を含めることができます:
* currentPage 現在のページ番号 (オプション)
* ページあたりのアイテム数ページ (オプション)
* itemData ページへのデータ
    */
function pager($params = array( ))
{
グローバル $HTTP_GET_VARS;

        $this->_currentPage = max((int)@$HTTP_GET_VARS['pageID'], 1);
$this->_perPage = 8;
$this->_itemData = array();

foreach ( $params as $name => $value) {
$this->{'_' . $name} = $value;
}

$this->_totalItems = count($this->_itemData);
}

/**
* 現在のページデータの配列を返します
*
* @param $pageID 希望のページID (オプション)
* @return array ページデータ
    */
function getPageData($pageID = null)
{
if (isset($pageID)) {
if (!empty($this->_pageData[$pageID])) {
return $this->_pageData[$pageID];
} else {
FALSE を返す;
}
}

if (!isset($this->_pageData) {
$this->_generatePageData();
}

return $this->getPageData($this->_currentPage) ;
}

/**
* 指定されたオフセットのページIDを返します
*
* @param $index ページIDを取得するためのオフセット
* @return int 指定されたオフセットのページID
    */
function getPageIdByOffset($index)
{
if (!isset($this->_pageData) {
$this->_generatePageData() ;
}

if (($index % $this->_perPage) > 0) {
$pageID = ceil((float)$index / (float)$this->_perPage);
} else {
$page ID = $index / $this->_perPage;
}

return $pageID;
}

/**
* 指定されたページ ID のオフセットを返します。たとえば、
* pageID 1 を渡し、perPage 制限が 10 の場合
* 1 と 10 が返されます。Pag​​eID が 2 の場合、
* 11 と 20 が返されます。
*
* @params pageID オフセットを取得するための PageID
* @return array 最初と最後のオフセット
    */
function getOffsetByPageId($pageid = null)
{
$pageid = isset($pageid) ? $pageid : $this->_currentPage;
if (!isset($this->_pageData)) {
$this->_generatePageData();
}

if (isset($this->_pageData)データ[ $pageid])) {
return array(($this->_perPage * ($pageid - 1)) + 1, min($this->_totalItems, $this->_perPage * $pageid));
} else {
戻り配列(0,0);
}
    }

/**
* 戻る/次へおよびページのリンクを返します
*
* @param $back_html 戻るリンク内に配置する HTML
* @param $next_html 次のリンク内に配置する HTML
* @return 配列 戻る/ページ/次のリンク
    */
function getLinks($back_html = '<<戻る', $next_html = '次>>')
{
$url = $this->_getLinksUrl( );
$back = $this->_getBackLink($url, $back_html);
$pages = $this->_getPageLinks($url);
$next = $this->_getNextLink($url, $ next_html);

return array($back, $pages, $next, 'back' => $back, 'pages' => $pages, 'next' => $next);
}

/ **
* ページ数を返します
*
* @return int ページ数
    */
function numPages()
{
return $this->_totalPages;
}

/**
* 現在のページが最初のページかどうかを返します
*
* @return bool 最初のページかどうか
    */
function isFirstPage()
{
return ( $this-> _currentPage == 1);
}

/**
* 現在のページが最後のページかどうかを返します
*
* @return bool 最後のページかどうか
    */
function isLastPage()
{
return ($this->_currentPage == $this->_totalPages);
}

/* *
* 最後のページが完了したかどうかを返します
*
* @return bool 最終年齢が完了したかどうか
    */
function isLastPageComplete()
{
return !($this->_totalItems % $this->_perPage);
}

/**
* すべてのページデータを計算します
    */
function _generatePageData()
{
$this->totalItems = count($this->gt;_itemData);
$this->totalPages = ceil((float)$this->totalItems / (float)$this->gt;_perPage);
$i = 1;
if (!empty($this->_itemData)) {
foreach ($this->_itemData as $value) {
$this->_pageData[$i][] = $ value;
if (count($this->_pageData[$i]) >= $this->_perPage) {
$i++;
}
}
} else {
$this->_pageData = 配列();
}
}

/**
* 戻る/ページ/次のリンクの正しいリンクを返します
*
* @return string Url
    */
function _getLinksUrl()
{
        global $HTTP_SERVER_VARS;

// URL が乱雑にならないようにクエリ文字列を整理します
$querystring = array();
if (!empty($HTTP_SERVER_VARS['QUERY_STRING'])) {
$qs =explode( 「&」、 $HTTP_SERVER_VARS['QUERY_STRING']);            
for ($i = 0, $cnt = count($qs); $i < $cnt; $i++) {
list($name, $value) =explode('=', $qs[$i] );
if ($name != 'pageID') {
$qs[$name] = $value;
unset($qs[$i] );
}
}
if(is_array($qs) ){
foreach ($qs as $name => $value) {
$querystring[] = $name 。 '=' 。 $value;
}
}
return $HTTP_SERVER_VARS['SCRIPT_NAME'] 。 「?」 。 implode('&', $querystring) 。 (!empty($querystring) ? '&' : '') 。 'pageID=';
}

/**
* 戻るリンクを返します
*
* @param $url リンクで使用する URL
* @param $link リンクとして使用する HTML
* @return string リンク
    */
function _getBackLink($url, $link = '<< 戻る')
{
// 戻るリンク
if ($this-> _currentPage > 1) {
$back = '' 。 $link 。 '';
} else {
$back = '';
}

return $back;
}

/**
* ページのリンクを返します
*
* @param $url リンクで使用する URL
* @return string リンク
    */
関数 _getPageLinks($url)
{
/ / 範囲を作成します
$params['itemData'] = range(1, max(1, $this->_totalPages));
$pager =& new Pager($params);
$links = $pager-> ;getPageData($pager->getPageIdByOffset($this->_currentPage));

for ($i=0; $i if ($links[$i] != $this->_currentPage) {
$links[$i] = '' 。 $links[$i] 。 '';
}
}

return implode(' ', $links);
}

/**
* 次のリンクを返します
*
* @param $url リンクで使用する URL
    * @param $link リンクとして使用する HTML
* @return string リンク
*/
function _getNextLink($url, $link = 'Next >>')
{
if ($this->_currentPage < $this->_totalPages) {
$next = '' 。 $link 。 '';
} else {
$next = '';
}

return $next;
}
}

?>



関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート