人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

分かる方はいませんか??

<?PHP
$countRe=$num_rows;
function pager($id,$countRe){
if($id=="") $id=1;

$maxPage=ceil($countRe/10);
if($maxPage==1 or $maxPage<$id) return false;

if($id>6){
$startPage=$id-5;
$startMore="<a href=\"$PHP_SELF?id=".($startPage -1)."\">&lt; PREV</a>";
}else{
$startPage=1;
}

if($id+5<$maxPage){
$endPage=$id+5;
$endMore=" <a href=\"$PHP_SELF?id=".($endPage+1)."\">NEXT &gt;</a>";
}else{
$endPage=$maxPage;
}
$page_footer="";
for($i=$startPage;$i<=$endPage;$i++){
$page_footer.=" ".(($id==$i)?"<span style='font-Size:120%'>$i</span>":"<a href=\"$PHP_SELF?id=$i\">$i</a>");
}
$page_footer=$startMore.$page_footer.$endMore;
print $page_footer."<br>";
}
?>
現在、このようなソースでページングをしています。1ページにつき10件ずつ表示させたいのです。該当データ11件になったら、ちゃんとリンクが[1,2]と出てくれますが、1ページ目に11件、2ページ目でも11件出てしまいます。理想は説明不要だと思いますが、1ページ目に10件、2ページ目で余りの1件表示させたいです。このソースの問題ではなくSELECT文の問題なんでしょうか??LIMIT 0,10としたら11件該当しなければならないのに10件しか該当しないとなり、これはこれでおかしくなります。


●質問者: rogotaro
●カテゴリ:コンピュータ ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● kokam20

ご推察の通り、データ取得時の問題です。

>このソースの問題ではなくSELECT文の問題なんでしょうか??

1ページ目のデータを取得する時のSQLと、2ページ目のデータを取得する時のSQLを見直す事をお勧めします。

SQLを開示して頂けたら、詳細なアドバイスができるかと思いますので可能でしたらお願いします。


2 ● kokam20

SQLは下記2種類実施する必要があります。

1 該当データの全件数(11件)を取得する(ページング作成のため)

2 ページに表示するデータを取得する(1ページ目10件、2ページ目1件)

ページリンクを変更する際、$_GET['id']にページ番号が入っているので

上の2のSQLを動的に作成します。

※下記参考になるかと思います、(SQLインジェクション対策は別途実装して下さい)


// ページ番号取得

$page =$_GET['id'];

// 該当ページ10件

if($page > 0) {

$st = 10 * ($page - 1);

$limit =" LIMIT {$st}, 10";

// 初期表示(最初の10件)

} else {

$limit =" LIMIT 0, 10";

}

$sql = "select * from lab $limit";


ちなみに、seect * from labも上の1のために実施する必要があります。

(件数だけなので、select count(*) from labでも良いかと思います)

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ