2008年06月21日

[PHP]最近一番がんばったコード



//ナビゲーション用
$searchMaxNum =20;
$naviNum = 7;
$naviNumMedian = ceil($naviNum/2);
$naviMaxNum = ceil($maxItem / $searchMaxNum);

//ページは1から始まるべき
if($naviMaxNum < $page || $page < 0){
$page = 1;
}

//startnumの+1は数字を1からスタートさせるため
//ex)1ページ20件表示なら、1ページ目は1からスタート、2ページ目は21からスタート
//($page-1) * $seachMaxNum + 1でも同じ
$startNum = $page * $searchMaxNum - $searchMaxNum + 1;

//endNumが全アイテム数を超える場合は全アイテム数がendNum
$endNum = ($maxItem > ($page * $searchMaxNum)) ? ($page * $searchMaxNum) : $maxItem;

//ナビメニューの数字 (1|2|3|)のループ用変数の作成

if($naviNum >= $naviMaxNum){
//ナビに表示するページ数より、分割したページ数の方が少ないなら1−最大ページまで表示
$naviStart = 1;
$naviLoop = $naviMaxNum + $naviStart;
}
elseif($page <= $naviNumMedian){
//表示するページが、表示するナビの数の中央より小さいときは1から表示する。
$naviStart = 1;
$naviLoop = $naviNum + $naviStart;
}
elseif(($page + $naviNumMedian) > $naviMaxNum){
//上の逆、最大で10ページしかないとき、10ページを選んでもナビが10だけになら無いように
$naviStart = $naviMaxNum - $naviNum +1;
$naviLoop = $naviNum + $naviStart;
}
else{
//ページ数からナビに表示する数の分表示すればいい
$naviStart = $page - $naviNumMedian + 1;
$naviLoop = $naviNum + $naviStart;
}

//ナビの次のページと、前のページのページ数
$naviNext = (($page + 1) <= $naviMaxNum) ? ($page + 1) : 0;
$naviPrevious = (($page - 1) >= 1) ? ($page -1) : 0;


まぁよくあるページナビゲーションを作りたかった訳だが。
今読み返してみるとコメント変だwww

後下の感じにするのとどっちが読みやすいだろうか。


//ナビメニューの数字 (1|2|3|)のループ用変数の作成

if($naviNum >= $naviMaxNum){
//ナビに表示するページ数より、分割したページ数の方が少ないなら1−最大ページまで表示
$naviStart = 1;
$naviNum = $naviMaxNum;
}
elseif($page <= $naviNumMedian){
//表示するページが、表示するナビの数の中央より小さいときは1から表示する。
$naviStart = 1;
}
elseif(($page + $naviNumMedian) > $naviMaxNum){
//上の逆、最大で10ページしかないとき、10ページを選んでもナビが10だけになら無いように
$naviStart = $naviMaxNum - $naviNum +1;
}
else{
//ページ数からナビに表示する数の分表示すればいい
$naviStart = $page - $naviNumMedian + 1;
}
$naviLoop = $naviNum + $naviStart;

まだまだだなぁ
posted by Belial at 23:34 | Comment(0) | TrackBack(0) | その他 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。