データベース(MySQL)にデータを保存し、そのデータを見やすく表示するスクリプトを作成しているのですが、データの量が多いため以下のように10レコードづつ表示しています。
$page = ceil($CountRe/10);
for ($i=1;$i<= $page;$i++){
echo "<a href=\"./db_show.php?number=".$i."\">".$i."</a>";
}
しかしこの場合だと100レコードあれば <a href="?id=1">1</a>から<a href="?id=10">10</a>までのリンクが表示されます。これが1000レコードの場合、100までなのでこれをどうにか短くして表示したいと思っています。
簡単にはGoogleの検索のように 例えば8ページ目を表示している場合、 下5件、上5件までを表示したいので 3 4 5 6 7 8 9 10 11 12 13 のような感じで、レコード数が 10000でもリンクは短く表示できるようにするにはどうすればいいのでしょうか?
Pearなどの外部ファイルを使用しない方法でお願いいたします。
No.3ベストアンサー
- 回答日時:
いくつかの仕様要件があります。
現在のページを$idとして、最終カウント数を
$countRe、ページャーの戻り表示を$page_footer
としますと、$idや$countReの値によって、
$page_footerは可変になるかと思います。
以下4例ほど挙げていますので、ご確認ください。
<?PHP
$countRe=30;
pager($_GET["id"],$countRe);
$countRe=65;
pager($_GET["id"],$countRe);
$countRe=100;
pager($_GET["id"],$countRe);
$countRe=1000;
pager($_GET["id"],$countRe);
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)."\">< PREV</a>";
}else{
$startPage=1;
}
if($id+5<$maxPage){
$endPage=$id+5;
$endMore=" <a href=\"$PHP_SELF?id=".($endPage+1)."\">NEXT ></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>";
}
?>
No.2
- 回答日時:
最小値が1で最大値が$CountReなら
if ($number - 5 > 0) {
$start = $number - 5;
}
else {
$start = 1;
}
if ( $number + 5 < $CountRe) {
$end = $number + 5;
}
else {
$end = $CountRe;
}
for ($i = $start; $i <= $end; $i++)
ですね
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP php my adminより取り出したデータ表示 2 2022/06/15 11:56
- PHP PHP ページング データベース 1 2022/06/16 10:30
- PHP PHP一覧表示した項目にリンクをはりたい 1 2023/07/12 17:08
- PHP phpでこの記述をもっと簡単に書く方法はないでしょうか…? 3 2022/11/16 19:57
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- Excel(エクセル) 非表示にしたい行をグループ化して折り畳み 4 2022/09/17 20:17
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MAX関数を使ってからLEFT JOIN...
-
javascriptテキストBOX色を元に...
-
クリックで色変更後に既に変更...
-
removeEventListenerについて
-
テキストエリア内の一部の文字...
-
createElementが一瞬で消えてし...
-
指定したパスが現URLに含まれて...
-
iframe内のリンクが飛ばないの...
-
innerHTMLの初期値
-
背景色を透明化
-
console.log結果をhtmlで表示し...
-
IFRAMEの表示/非表示を切り替え...
-
JSで動的にリンクを作成
-
jQueryでクリックされた要素のi...
-
javascriptでオブジェクトの重...
-
読み込んだQRコードをフォーム...
-
createElementで作成した要素を...
-
classの中の<a>タグにidを追加
-
変数内容をHTML内で表示する方法
-
[急ぎ] videoタグで埋め込んだm...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MAX関数を使ってからLEFT JOIN...
-
HTMLタグに複数のクラスを設定...
-
変数名をどのようにつけるのが...
-
401エラードキュメントを401.ht...
-
javascriptテキストBOX色を元に...
-
読み込んだQRコードをフォーム...
-
タブで開いてさらにタブ内をア...
-
createElementで作成した要素を...
-
removeEventListenerについて
-
表示・非表示のスクリプトで、...
-
HTMLとJavaScriptで作ったタイ...
-
HTMLとJavaScriptで作ったタイ...
-
getElementByIdの戻り値がnull...
-
指定したパスが現URLに含まれて...
-
[急ぎ] videoタグで埋め込んだm...
-
IFRAMEの表示/非表示を切り替え...
-
iframe内のリンクが飛ばないの...
-
removeAttribute()メソッドで削...
-
背景色を透明化
-
jQueryで同じid属性が複数あっ...
おすすめ情報