
お世話になります。PHP4とMysqlで検索システムを作っているのですが、「次の○件」は過去ログを利用してできたのですが「前の○件」がわかりません。「次の○件」の構文は以下のように書きました。
define ( 'PAGE_MAX', 10 );
$page = $_GET['page'];
if ( $page == "" ) {
$page = -1;}
// 総レコード数を取得
$sql = "select count(*) from test";
$result = mysql_query ( $sql );
$rec = mysql_fetch_array ( $result );
// 総レコード数
$recMax = $rec[0];
// 次のページで表示するレコードがあるか
if ( $recMax > PAGE_MAX * ($page+1) ) {
$page ++;
$link = "<a href=\"test.php?page=$page\">次の".PAGE_MAX."件";}
// 現在のページで表示するデータを取得
// 開始レコード位置
$start = $page * PAGE_MAX;
// 終了レコード位置
$max = PAGE_MAX;
$sql= "select * from test LIMIT $start,$max";
$result = mysql_query($sql);
$rows = mysql_num_rows($result);
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
実は
・最初の○件
・次の○件
・前の○件
・最後の○件
・○ページ目を表示する
は、全部同じ処理です。
・最初の○件
「何件目から表示するか」を「1件目」にしてから処理する
・次の○件
「何件目から表示するか」を「今表示した件数 + 1件目」にしてから処理する
・前の○件
「何件目から表示するか」を「今表示した件数 - 1ページの表示件数」にしてから処理する
・最後の○件
「何件目から表示するか」を「全体の件数 - 1ページの表示件数」にしてから処理する
・○ページ目を表示する
「何件目から表示するか」を「1ページの表示件数 × ページ番号 + 1 - 1ページの表示件数」にしてから処理する
つまり、どの処理も「最初に、何件スキップするか」だけが違うのみで、後は全部同じ処理なのです。どのページを表示するにしても、毎回、クエリを実行します。
例えば、現在の表示結果が「41件目から60件目までの20件」だった場合は、
・最初の20件
「何件目から表示するか」を「1」にする。
・次の20件
「何件目から表示するか」を「61」にする。
・前の20件
「何件目から表示するか」を「21」にする。
・最後の20件
「何件目から表示するか」を「総件数-20」にする。
・5ページ目を表示する
「何件目から表示するか」を「81」にする。
のようになります。応用すれば、
1ページ目を表示→「何件目から表示するか」を「1」にする。
2ページ目を表示→「何件目から表示するか」を「21」にする。
3ページ目を表示→「何件目から表示するか」を「41」にする。
のように「直接、○ページ目に飛ぶ」と言うのも可能です。
この回答への補足
またまたすいません。教えてください。試行錯誤して作ってみたのですが、最終のページがうまくいきません。全部で96件あるのですが、test.php?page=9とtest.php?page=10が同じ表示(81~90)になってしまいます。そしてtest.php?page=11にすると最終ページになりますがtest.php?page=10のページで「次の10件」が表示されないので飛べません。また、$page -= 2を$page --;にしてみると前に戻らず現在の表示だけになってしまいます。最終ページの構文はどんな感じになるのでしょうか。よろしければお願いします。
define ( 'PAGE_MAX', 10 );
$page = $_GET['page'];
if ( $page == "" ) {
$page = 1;
}
// 最初のページで表示するレコードがあるか
$link3 = "<a href=\"test.php?page=1\">最初の10件";
// 総レコード数を取得
$sql = "select count(*) from test2";
$result = mysql_query ( $sql );
$rec = mysql_fetch_array ( $result );
// 総レコード数
$recMax = $rec[0];
// 次のページで表示するレコードがあるか
if ( $recMax > PAGE_MAX * $page + 1){
$page ++;
$link = "<a href=\"test.php?page=$page\">次の".PAGE_MAX."件";
}
// 前のページで表示するレコードがあるか
if ( $page <> 0 ) {
$page -= 2;
$link2 = "<a href=\"test.php?page=$page\">前の".PAGE_MAX."件";
}
//最初のページの場合
if ( $page == 0 ) {
$link2 = " ";
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP PHP ページング データベース 1 2022/06/16 10:30
- PHP php my adminより取り出したデータ表示 2 2022/06/15 11:56
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- PHP クエリObjectをforeachで回す時に、次のレコードへ移動せずに次のレコードを取得したい 2 2022/07/28 15:29
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- IT・エンジニアリング ★お手上げ状態です。助けてください。ActiveReportについて 1 2023/08/20 04:29
- Visual Basic(VBA) ★お手上げ状態です。助けてください。ActiveReportについて 1 2023/08/20 04:27
- PHP PHP一覧表示した項目にリンクをはりたい 1 2023/07/12 17:08
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
処理終了後、他のページへジャ...
-
VBAのCallステートメントについて
-
C言語のflagの使い方が分かりま...
-
UWSC SLCTBOXもしくはSELECTに...
-
Application.ScreenUpdating = ...
-
JSONで文字列が長い時
-
シェルスクリプトで、空白(ス...
-
メモリをアドレスを直接指定し...
-
実行時エラー 3020の対策
-
子windowsからsubmit()後にclos...
-
複数列を持ったリストボックス...
-
formで特定のinputを送信しない...
-
16進の10進変換について
-
<SELECT>タグの折り返し
-
vbaでxmlからNodeListでデータ...
-
文字の横にプルダウンを表示さ...
-
switch文のエラーについて
-
フォームの「キャンセル」ボタ...
-
map(STL)でinsertを行いたいで...
-
セレクトメニューで2つの項目...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB6で、長い時間かかる処理...
-
実行中の変数の中身をイミディ...
-
初回起動のみ判別したい
-
C言語のflagの使い方が分かりま...
-
処理終了後、他のページへジャ...
-
C#でDataFridViewの行をすべて...
-
回数を指定しないで空白行まで...
-
SetDlgItemInt( ) c++
-
perl:ループのカウンタ変数の値...
-
問題作成のWebアプリの作り方を...
-
UWSC SLCTBOXもしくはSELECTに...
-
STDINによるキーボードからの入...
-
Pythonでこのプログラミングを...
-
VBAのCallステートメントについて
-
Valueの値によってActionの送信...
-
フラグをたてる、、の意味を教...
-
C言語のプログラミング
-
arduino の割り込み処理について
-
教えてください。 画像処理のプ...
-
スカラー変数に処理を入れる
おすすめ情報