はじめまして、
現在ページング処理で悩んでます。ご協力お願いします。
PHP4.4.6とMySQLを使用し
1ページ10件 MAXページ99ページ
前次12345・・・のように表示させ・・・の部分をクリックすると
データが51件以上 前次45678・・・
データが60件以下 前次23456
データが70件以下 前次34567
のように表示させるにはどのような処理、考え方をしたらよいでしょうか?
なんとか自力で 前次12345 は表示、動作できたのですがその先どうしたらいいか解かりません。質問解かりにくいかもしれませんが、どうかお知恵をお貸しください。よろしくお願いします。
No.4ベストアンサー
- 回答日時:
#3です。
もう一度読み直したのですが、、
>前次12345・・・
は1をクリックした場合どこへ飛ぶのでしょうか。
現在1ページ目が表示されているとすれば前という表示もあるとおかしいので、
次23456・・・
となるのではないでしょうか?
2ページ以降を表示しているとしても1というのはどういう状況でなら表示するのかが思い浮かびませんでした。。
その辺が気になったのですがとりあえず自分の解釈の前提で説明させていただきます。参考程度に目を通してください。
どこまで出来ているのかちょっとわからないのでどこから説明したらよいのかもわかりませんが、私はSQLにLIMITをかけて処理をする方法を普段使っています。
最初のページからスタートした場合私の場合なら
次 2 3 4 5 6 ・・・
という表示にします。
次と2は同じリンクが張られます。
10件ずつ表示することを前提に、
LIMITに使うオフセット数は
2→offset=10
3→offset=20
4→offset=30
以下6まで続く
となります。
つまり(ページ数-1)*10がそのページに張られるリンクのオフセット数となります。
で本題というか
60<データ件数<=70 なら 前次34567
の考え方ですが、仮にデータ件数が68だとするとページ数は7ですよね。
なので(7-1)*10=60が最後のページのオフセット数です。
表示させたいのは
34567
なのですが、表示が34567となるためには3の前にある2をクリックした時ですよね。
ということは2に張るリンクのオフセット数と同じオフセット数ということになります。
長くなってしまいましたが
・・・に張るリンクのオフセット数は
最後のページのオフセット数 - (10*5)
となります。
この例の場合は60 - 50 = 10
ですね。
$onepage = 10; //1ページの表示件数
$self = $_SERVER['SCRIPT_NAME'];
$lastofst = ($lastpage-1)*10; //最終ページオフセット
$jumpofst = $lastofst - 50; //リンクに張られるオフセット
//リンク先文字列生成
$jump = $self . "?ofst=" . $jumpofst . "&onepage=" . $nepage;
$str .= '<a href="'.$jump.'">'."・・・".'</a>';
echo " ".$str;
こんな感じかと思います。
34567自体の表示は
最後が7とわかればスタートが7-5から1を加えながら7になるまでforで生成してあげればいいですよね。
No.3
- 回答日時:
>データが51件以上 前次45678・・・
ここの意味がわからないのですが・・・。
下の二つは
50<データ件数<=60 なら 前次23456
60<データ件数<=70 なら 前次34567
ということですよね。
要は最後のデータを表示するページを合わせて後ろから5ページのリンクということでしょうか。
それならできそうな感じがしますけど。。
でも
>MAXページ99ページ
ということは10×99=990なのでデータ件数は991~1000の間の件数あるってことになってしまうんですけど。。
随時増えていくデータで、増え続けても最大1000件までってことなんでしょうか。
日本語は難しいです。。
この回答への補足
日本語下手ですいませんです。
データが51件以上 前次45678・・・
一旦おいといて、
50<データ件数<=60 なら 前次23456
60<データ件数<=70 なら 前次34567
だとどのように考えたらよろしいでしょうか?
よろしくお願いします。
>MAXページ99ページ
データが1000件以上あった場合99ページということなのですが
本当に日本語下手ですいません
No.2
- 回答日時:
pearのpager なんかはいかがでしょうか?
http://www.go-pear.org/manual/ja/package.html.pa …
やりたいことは、これのスライド型じゃないですか?
参考URL:http://www.go-pear.org/manual/ja/package.html.pa …
No.1
- 回答日時:
早速貴重な情報ありがとうございました。何度も読み返し前次12345の処理はうまくいきました。
色々自分で考えテストしたのですが
・・・の処理については解決できませんでした。どのように考えたらよいのでしょうか?ご協力お願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP ページング データベース 1 2022/06/16 10:30
- PHP php my adminより取り出したデータ表示 2 2022/06/15 11:56
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP PHPで入力フォームでデータを確認表示画面まで送る流れを日本語で理解したいのです。 1 2023/05/29 19:12
- IT・エンジニアリング ★お手上げ状態です。助けてください。ActiveReportについて 1 2023/08/20 04:29
- Visual Basic(VBA) ★お手上げ状態です。助けてください。ActiveReportについて 1 2023/08/20 04:27
- Visual Basic(VBA) ActiveReportのサブレポート機能を利用したときに1ページ目の1サブレポート目が表示されない 1 2023/08/19 06:10
- その他(データベース) 業務用のデータベースサーバーの選び方について 4 2022/11/22 10:22
- Java javaの質問です 次の機能を有するメソッド4つを自クラスに作成し、実装したいです 【機能】 足し算 1 2022/06/15 17:49
- MySQL 「掲示板のログイン画面」はPHP~MySQLに「データベース認証のシステム」方式です。 1 2022/09/27 05:00
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【C#】DataGridViewの最大列数...
-
WordでExcelデータを差込...
-
DTOとEntityの差は何ですか。
-
excel access連携 このテーブル...
-
TCPDFでのHTML出力
-
rsyncでのエラー(sh: rsync: no...
-
ページ切り替え機能
-
htmlについて.sqlの表示
-
エクセルVBAで楽天証券に注...
-
WEBページの保存
-
回線速度が64kbpsだったら、64k...
-
長い1枚ページを無限スクロール...
-
ASPからExcelのデータを読む方法
-
VBA内でのGetPixelを使用した時...
-
「外部データの取り込み」とい...
-
エクセル オートフィルタ プ...
-
ActiveReportのサブレポート機...
-
小数点以下を含む計算でバグが...
-
C言語で地図を描きたい
-
Excelピポットテーブルでの表示...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
wordの差し込み印刷で文字...
-
DTOとEntityの差は何ですか。
-
【C#】DataGridViewの最大列数...
-
excel access連携 このテーブル...
-
WordでExcelデータを差込...
-
ActiveReportのサブレポート機...
-
GridViewからチェックボックス...
-
★お手上げ状態です。助けてくだ...
-
VBA内でのGetPixelを使用した時...
-
表を表示するコントロールについて
-
Windowsのマクロプログラムで、...
-
INIファイルに一括書き込みを行...
-
MSFlexGridのデータを初期化し...
-
C#でのForm間のデータ受け渡し...
-
「外部データの取り込み」とい...
-
C言語で地図を描きたい
-
小数点以下を含む計算でバグが...
-
エクセルVBAで楽天証券に注...
-
CSVのインポート【ASP.NET】
-
画像の読み込み&白黒判別プロ...
おすすめ情報