PHPの改ページメソッド

PHP

PHPで改ページメソッドを作成しましたのでソースを公開します。
自分がプログラミングをし始めた頃に作ったメソッドなので、これで良いのかは分かりませんが、動きます。

改ページメソッド

//-----------------------------------------
//改ページメソッド
//-----------------------------------------
//引数   $page  今のページ番号
//      $record_count 全レコード数
//      $page_name  ページのパラメータ名
//      $link_name  リンク名
//      $parameter  リンクのパラメータ
//戻り値  $list["page_link"]  リンクのテキスト
//      $list["start_num"]   ページの開始数
//      $list["end_num"]     ページの終了数
//-----------------------------------------
public function fnGetPager($page, $record_count, $page_name="p", $link_name="index.php", $parameter=""){
  $pase_hyouji = 5;
  $page_link = "";
  $start_num = "";
  $end_num = "";
  if($record_count>MAX_RECORD_){
    $i_amari    = $record_count % MAX_RECORD_;
    $i_max_page = $record_count / MAX_RECORD_;
    $icounter = 0;
    $i_flg = 0;
    if($i_amari>0){
      $i_max_page = (int)$i_max_page + 1;
    }
    if($page <= $i_max_page && $page>=2){
      $page_link .= "<a href=\"" . $link_name . "?" . $page_name . "=1" . $parameter . "\">最初</a>&nbsp;";
      $page_link .= "<a href=\"" . $link_name . "?" . $page_name . "=" . ($page-1) . $parameter . "\">前へ</a>&nbsp;";
    }
    else{
      $page_link .= "最初&nbsp;";
      $page_link .= "前へ&nbsp;";
    }
    for($i=1; $i<=$i_max_page; $i++){
      if($page!=$i){
        if($i>$page-$pase_hyouji){
          $page_link .= "<a href=\"" . $link_name . "?" . $page_name . "=" . $i . $parameter . "\">" . $i . "</a>\n";
        }
      }else{
        $page_link .= "<b>" . $i . "</b>\n";
        $i_flg = 1;
      }
      if($i_flg==1){
        $icounter++;
        if($icounter>$pase_hyouji){
          break;
        }
      }
    }
    if($page < $i_max_page){
      $page_link .= "&nbsp;<a href=\"" . $link_name . "?" . $page_name . "=" . ($page+1) . $parameter . "\">次へ</a>";
      $page_link .= "&nbsp;<a href=\"" . $link_name . "?" . $page_name . "=" . $i_max_page . $parameter . "\">最後</a>";
    }
    else{
      $page_link .= "&nbsp;次へ";
      $page_link .= "&nbsp;最後";
    }
  }
  if($page > 1){
    $start_num = ($page-1) * MAX_RECORD_ + 1;
    if($record_count>($page * MAX_RECORD_)){
      $end_num = $page * MAX_RECORD_;
    }
    else{
      $end_num = $record_count;
    }
  }
  else{
    $start_num = 1;
    if($record_count>MAX_RECORD_){
      $end_num = MAX_RECORD_;
    }
    else{
      $end_num = $record_count;
    }
  }

  $list["page_link"]   = $page_link;
  $list["start_num"]   = $start_num;
  $list["end_num"]   = $end_num;

  return $list;
}

使い方

$record_count = 5;
$list = array("A","B","C","D","E","F","G","H","I","J","K");

$classTooles = new classTooles; //Toolesクラスがあったとして

$get_page = $classTooles->fnGetPager($page, $record_count, "p", "index.php", "");
$page_link = $get_page["page_link"];
$start_num = $get_page["start_num"];
$end_num   = $get_page["end_num"];

echo $record_count . "件 (" . $start_num . "-" . $end_num . "件)<br>";

foreach($list as $value){
  echo $value . "<br>";
}

echo $page_link . "<br>;