
お世話になります。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を探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォームの太字を置き換える
-
自動的にエスケープを付けて別...
-
ページングで「前の○件」の方法
-
問題作成のWebアプリの作り方を...
-
右詰表示
-
HTML
-
続・開始時間、終了時間のCGI設定
-
JavaScriptのことで
-
画像ファイルが崩れる
-
JSONで文字列が長い時
-
改行
-
Spamassassinでsendmailが通ら...
-
HTMLのアクセスキーはselectに...
-
falshファイルのtitolタグ
-
大至急お願いします。出力で悩み。
-
CSVファイルに出力
-
リストボックス内の文字について
-
プルダウンメニュー(セレクト...
-
配列を使っての文字列抽出について
-
phpからmysqlのテーブルにデー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB6で、長い時間かかる処理...
-
実行中の変数の中身をイミディ...
-
初回起動のみ判別したい
-
C言語のflagの使い方が分かりま...
-
処理終了後、他のページへジャ...
-
C#でDataFridViewの行をすべて...
-
回数を指定しないで空白行まで...
-
SetDlgItemInt( ) c++
-
perl:ループのカウンタ変数の値...
-
問題作成のWebアプリの作り方を...
-
UWSC SLCTBOXもしくはSELECTに...
-
STDINによるキーボードからの入...
-
Pythonでこのプログラミングを...
-
VBAのCallステートメントについて
-
Valueの値によってActionの送信...
-
フラグをたてる、、の意味を教...
-
C言語のプログラミング
-
arduino の割り込み処理について
-
教えてください。 画像処理のプ...
-
スカラー変数に処理を入れる
おすすめ情報