phpでページャー実装
ページャーのクラスを作ったのでメモ。
<?php class pager { var $link_ary; var $nextp; var $prevp; var $sql; //引数に、表示するレコード数($limit)、表示するページNo($pno)、セレクトするテーブルの全件抽出の為のSQL文($fselect)を指定します function pager ($limit,$pno,$fselect) { $this->link_ary = array(); $this->nextp = ""; $this->prevp = ""; //$pno 入ってなかった時の為に、デフォルトで1を代入。 if ($pno < 1 || $pno == "") { $pno = 1; } //レコード全件抽出 $result = mysql_query($fselect); $all_rec = mysql_num_rows($result); //全件レコード÷表示するレコード で、全ページ数を出す if ($all_rec != 0) { $pagesu = ceil($all_rec / $limit); } else { $pagesu = 1; } //ページ数が1ページを超えるなら、 if ($pagesu > 1) { //ページ数が10以下の場合 if ($pagesu <= 10) { //全ページのページ番号の配列を作ります for ($i=1 ; $i<=$pagesu ; $i++) { $this->link_ary[$i]["page"] = $i; if ($i != $pno) { $this->link_ary[$i]["plink"] = $i; } } //ページ数が11以上の場合 } else { $sti = $pno - 4; //開始ページ番号 $edi = $pno + 5; //終了ページ番号 $flag = 0; //開始ページが、1以下になる場合は強制的に変数変更 if ($sti <= 1) { $sti = 1; $edi = 10; $flag = 1; //終了ページが、全ページ数以上になる場合は強制的に変数変更 } elseif ($edi >= $pagesu) { $sti = $pagesu - 9; $edi = $pagesu; $flag = 2; } //表示ページを真ん中にした、10ページ分のページ配列を作成 for ($i=$sti;$i<=$edi;$i++) { $this->link_ary[$i]["page"] = $i; if ($i != $pno) { $this->link_ary[$i]["plink"] = $i; } } //フラグの結果で、各ページリンクの前後に"..."の挿入を判断 switch ($flag) { case 1: array_push($this->link_ary,array("page"=>"...")); break; case 2: array_unshift($this->link_ary,array("page"=>"...")); break; default: array_unshift($this->link_ary,array("page"=>"...")); array_push($this->link_ary,array("page"=>"...")); } } //表示ページの前と後のページ番号を入れる if ($pno < $pagesu) { $this->nextp = $pno+1; } if ($pno != 1) { $this->prevp = $pno-1; } } //sql文のオフセットを出す $offset = $limit * ($pno-1); //sql文を出す $this->sql = "{$fselect} LIMIT {$limit} OFFSET {$offset}"; } } ?>
これを、適当に加工すればページャー機能が実装できます。