No.2ベストアンサー
- 回答日時:
私だったら、下記のようにします。
(試してないのでくれぐれも、ご自分で再検討してください)
SELECT * FROM table_name LIMIT $x OFFSET $y;
と言うSQL文を効率よく発行するロジックを考えます。
10件表示という固定であれば、$x=10と固定できますが、色々なところで使い回しをしたいロジックですので、$xはやはり変数のままにしておく方がいいでしょう。
次に$yについてですが、これは1ページ目であれば0、2ページ目であれば10、3ページ目であれば20と言うことになります。
つまり1ページ目は、
SELECT * FROM table_name LIMIT 10 OFFSET 0;
2ページ目は、
SELECT * FROM table_name LIMIT 10 OFFSET 10;
3ページ目は、
SELECT * FROM table_name LIMIT 10 OFFSET 20;
を発行すればいいわけです。
SQL文の検索条件の部分(SELECT * FROM table_name)が固定であれば、毎回変わる部分は、OFFSETの値だけですね。
もし、上記検索条件部文が固定でないのであれば、その部分も変数にしておかなければなりません。
(そうしておいたほうが、色々なところで使い回しできます。それは自分で考えてみてくださいね。)
で、話を戻します。
ようはPHP側で、覚えておかなければいけないのはOFFSETの値だけです。
値を記憶する方法は、GET,POST,SESSION等色々ありますが、ここではSESSIONを使います。
ようは現在のページのOFFSETの値($y)をセッションに記憶しておきましょう。
そして、「次のページ」がクリックされたとき、そのページのOFFSETの値は$y+$xですね。
逆に「前のページ」がクリックされたときは、$y-$xです。
この辺はご理解いただけるでしょうか?
1ページ目が0,2ページ目が10,3ページ目が20なので、1ページ目から2ページ目へ移行したとき、0+10=10。
2ページ目から3ページ目へ移行したとき10+10=20。
3ページ目から2ページへ目移行したとき20-10=10。
となるわけです。
そこで、ページが移行したときに、セッションに登録されている$yの値を呼び出し、$xほど、足し算、引き算をして、現在のページの$xを求め、それを再びセッションに登録しておけばいいのです。
No.1
- 回答日時:
私が以前作成したときのロジックなんですが、
30件のレコードにはそれぞれ数値の主キーがついているとします。
1.主キーの降順でソートしてレコードを取得し、先頭から10件を表示。
このとき10件目のキー値を退避しておきます。
2.「次の10件」を選択された場合、退避しておいたキーの値よりも
大きい値のキーを持つレコードを再び主キーの昇順でソートして取得し、
先頭から10件表示。
この繰り返しですかね。
逆に前に戻るときは、
現在表示している1件目のレコードよりも小さい値のレコードをキー値の降順で
取得し、先頭から10件表示。
となります。
実際うまくいったのですが、説明がわかりずらいかもしれないので「自信なし」
にしておきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP php my adminより取り出したデータ表示 2 2022/06/15 11:56
- PHP PHP MySql ページング 2 2022/09/20 06:38
- MySQL xlmのSQLに関して ITに触れて、数ヶ月で疑似の予約サイトを作っているものです。 独自のmapp 1 2022/06/15 18:03
- 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
- Excel(エクセル) Excel2019 プルダウンで抽出したデータをコピペしたい 3 2023/07/11 09:10
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- PHP phpでこの記述をもっと簡単に書く方法はないでしょうか…? 3 2022/11/16 19:57
- PHP PHP ページング データベース 1 2022/06/16 10:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
日付を基にした乱数生成
-
PHPのif文「POSTしていな...
-
POSTされたかどうか確かめる方...
-
「次の10件を表示する」のよ...
-
ナベアツプログラム(3の倍数...
-
DTOとEntityの差は何ですか。
-
「取得先」という表現について
-
バッチファイルでpingの結果を...
-
Yahoo! JAPAN IDを新規取得でき...
-
WordでExcelデータを差込...
-
format関数について
-
switch()文で値の大小比較
-
Dosブロンプトでtabを出力したい
-
EXCEL、マクロ-改ページ行番号...
-
【C#】DataGridViewの最大列数...
-
イベントログ情報の取得順番に...
-
ミュージックのアートワークを...
-
GETのメリットについて
-
VB.NETからVBAマクロ(引数)を呼...
-
IPアドレスとMACアドレスを取得...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
日付を基にした乱数生成
-
<A href ~で複数の値を渡したい
-
「次の10件を表示する」のよ...
-
PHPでwait処理ってできます?
-
POSTされたかどうか確かめる方...
-
PHPのif文「POSTしていな...
-
テーブルに送信ボタンをつける
-
PHPでのNULLの正規表現
-
PHP フラグ
-
if文の複数条件。
-
if (isset($_a)&&$_a)この意味は
-
逆順表示したい?
-
PHP ハイパーリンク
-
Luaにて、and or の組み合わせ...
-
null代入とunset()の違いについて
-
SQLのデータを分割してブラウザ...
-
$_SERVER["QUERY_STRING"]の仕...
-
whileループの中でフォーム入力...
-
switch文で2つ以上の変数の値...
-
parse_ini_fileでダブルクォー...
おすすめ情報