/*
表示スタイルは次のとおりです:
[1] 2 3 4 5 6 7 8 9 10 ...100 次のページ 最後のページ
ホームページ 前のページ 1..12 13 14 15 [16] 17 18 19 20 ...100 次のページ 最後のページ
ホームページ 前のページ 1..92 93 94 95 96 97 98 [99] 100
使用法:
$currentPage = $_GET['page']? $_GET[' ページ']:1;
$pagediv = 新しい pagediv(500, 10, 11, $currentPage, 'test.php?page=');
*/
class pagediv
{
public $part1;
public $part4;
/*
Home Page Previous Page 1..12 13 14 15 [16] 17 18 19 20 ...100 次のページ 最後のページ
$part1 : ホーム ページ 前のページ
$part2 : 1..
$part3 : 12 13 14 15 [16] 17 18 19 20
$ part4 : .. .100
$part5: 次のページと最後のページ
*/
public $allPage; //総ページ数
public $perPage;ページごとのレコード
public $showPagesNo; // ページング バーの合計ページ数を表示します。 スタイル
public $currentPage; // 現在のページ
public $urlModel; // URL リンク スタイル
; $startHidden; //1...が表示されたときのページ 数字が表示されたときに中間ページの非表示を開始
public $endHidden //ページ数が表示されたときに中間ページの非表示を終了
public function __construct( $allRocords, $perPage, $showPagesNo, $currentPage, $urlModel){
$this ->allRocords = $allRocords;
$this->showPagesNo = $showPagesNo; $this->currentPage = $currentPage;
$this->urlModel = $urlModel;
$this->startHidden = $this- >getInt(($this->showPagesNo)/2); //6
$this->endHidden = $this->allPage - $this->startHidden; //94
}
パブリック関数getUrl($_index = ''){
$_current = $_index;
if( $_index == 'pre') $_current = $this->currentPage -1;
if($_index == 'next') $_current = $this->currentPage+1;
if($_index == '') $_current = $this->allPage
return $this->urlModel.$_current;
パブリック関数getAllPage(){
return $this->getInt($this->allRocords /$this->perPage)
}
public function getInt($_float){
$_int = $_float; $_index = strpos($_float,'.') == true ){
$ _int = substr($_float,0,$_index)
}
//ceil が記憶されていない場合の代替解決策
return $_int;
}
public function getPart1(){
$content = '< ;a href="'.$this->getUrl(1).'">ホームページ "'.$this->getUrl('pre').'"> ;前のページ
if($this->currentPage <= $this->startHidden){
$content = '';
return $content;
}
public function getPart2(){
$content = '
1< /a>
$add = '';
if($this ->現在のページ > $this->startHidden){
$add = '...'; ;currentPage == 1){
$content = '[1] ';
$add = '';
$part2 = $part2
}
パブリック関数 getPart3() {
$content = '';
if($this->currentPage <= $this->startHidden){
//[1] 2 3 4 5 6 7 8 9 10 ...100 次のページ、最後のページ
$long = $this->showPagesNo - 2;
for( $i=0;$i$j = $i+2; ->currentPage){
$content .= '['.$this ->currentPage.'] ';
}else{
$content .= ''.$j.'< /a> ' ] 100
$long = $this->showPagesNo - 2;
$_start = $this->allPage - $long;
for($i=0;$i<$long;$i++){
$j = $_start + $i;
if($j == $this->currentPage){
$content .= '[ '.$this->currentPage.'] ';
}else{
$content . = '' .' }
}
}else{
//ホームページ 前のページ 1..12 13 14 15 [16] 17 18 19 20 ...100 次のページ 最後のページ
$long = $ this->showPagesNo - 2;
$offset = $this->getInt($long /2) - 1;
$_start = $this->currentPage - $offset; i<$long;$i++){
$j = $_start + $i;
if ($j == $this->currentPage){
$content .= '['.$this->currentPage. '] ';
}else{
$content .= '
'.$j.' }
}
}
$part3 = $content;
$part3 を返します。
public function getPart4(){
$content = '
'.$this->allPage.' ';
$add = '';
if($this->currentPage < $this->endHidden){
$add = '...';
}
if($this->currentPage == $this->allPage){
$content = '['.$this->allPage.']';
$add = '';
}
$part4 = $add.$content;
$part4 を返します;
}
public function getPart5(){
$content = '
下页 尾页';
if($this->currentPage>= $this->endHidden){
$content = '';
}
$content を返します。
}
public function show(){
//判断法非
if(!is_numeric($this->currentPage) || $this->currentPage < 0 || $this->currentPage > $ this->allPage){
print 'error:pageNo は flase';
戻る;
}
//总页数は表示分数に達していません、すべて表示
if($this->allPage < $this->showPagesNo){
$long = $this->allPage ;
for($i=0;$i$j = $i+1;
if($j == $this->currentPage){
$content .= '['.$this->currentPage.'] ';
}else{
$content .= '
'.$j.' ';
}
}
print $content;
戻る;
}
$this->part1 = $this->getPart1();
$this->part2 = $this->getPart2();
$this->part3 = $this->getPart3();
$this->part4 = $this->getPart4();
$this->part5 = $this->getPart5();
print $this->part1.$this->part2.$this->part3.$this->part4.$this->part5;
}
}
?>
http://www.bkjia.com/PHPjc/320481.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/320481.html技術記事メールの回答があまり良くなく、特に JS 部分が長く転送されなかったのも原因です。