![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
検索システムの検索結果を分割表示する仕組みを作っているのですが、1ページ目は問題無く思った通りに表示されます。
しかし、2ページ目以降はすべて全件表示してしまいます。
「◯件中△件表示」というのは正常に動作しています。
いろいろ試行錯誤する中で、$queryの中身が2ページ目以降はwhere句等が外れてしまっているのが原因だということがわかりました。
じゃあ2ページ目以降にもきちんとそれらが反映されるように手直ししていこうということなのですが、どう対処していいかにつまづいています。
いろいろ情報を見ながら何度もチャレンジしているのですがうまくいきません。
2ページ目以降が全件表示ではなく検索結果として1ページ目の続きとして表示させるためにどうすればいいか、アドバイスをいただけないでしょうか。
よろしくお願い致します。
※以下に今回の該当箇所のコードを記載します。
<?php
$debug = false;
//DB 接続
$url = "localhost";
$user = "DBユーザー名";
$pass = "DBパスワード";
$db = "DB名";
$link = mysql_connect($url,$user,$pass) or die("No Connected");
$sdb = mysql_select_db($db,$link) or die("No Connected");
if($debug) echo_r($_GET);
mysql_set_charset('utf8');
//エラーチェック
//リクエストメソッドチェック
if($_SERVER["REQUEST_METHOD"] != "GET") {
echo "Error: invalid method";
exit();
}
define('NUM_SHOPS', 10);
error_reporting(E_ALL & ~E_NOTICE);
if (preg_match('/^[1-9][0-9]*$/', $_GET['page'])) {
$page = (int)$_GET['page'];
} else {
$page = 1;
}
$offset = NUM_SHOPS * ($page - 1);
//クエリ生成
$query = "SELECT * FROM テーブル名";
//検索条件抽出
$where = array();
if (isset($_GET['area'])and($_GET['area'] !== '')) {
$where[] = sprintf("(area='%s')", mysql_real_escape_string($_GET['area']));
}
if (count($where) <> 0) {
$query .= ' where ' . implode(' and ', $where) . ' ORDER BY id DESC ';
}
if (count($where) <> 0) {
$query .= "limit " . $offset . ", " . NUM_SHOPS;
}
//Result
$result = mysql_query($query) or die($query . '<br />' . mysql_error() . '<hr />');
$num_rows = mysql_num_rows($result);
//検索結果件数カウント
$query = "SELECT COUNT(id) FROM テーブル名";
$where = array();
if (isset($_GET['area'])and($_GET['area'] !== '')) {
$where[] = sprintf("(area='%s')", mysql_real_escape_string($_GET['area']));
}
if (count($where) <> 0) {
$query .= ' where ' . implode(' and ', $where) . ' ORDER BY id DESC';
}
$total = mysql_result(mysql_query($query), 0);
$from = $offset + 1;
$to = ($offset + NUM_SHOPS) < $total ? ($offset + NUM_SHOPS) :
$total;
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
</head>
<body>
<!--検索結果表示画面始まり-->
~~~~~省略~~~~~
<!--検索結果表示画面終わり-->
<!--以下、ページリンク-->
<p>
<?php if ($page > 1) : ?>
<a href="?page=<?php echo $page - 1; ?>">前</a>
<?php endif; ?>
<?php for ($i = 1; $i <= ceil($total / NUM_SHOPS); $i++) : ?>
<?php if ($page == $i) : ?>
<strong><?php echo $i; ?></strong>
<?php else : ?>
<a href="?page=<?php echo $i; ?>"><?php echo $i; ?></a>
<?php endif; ?>
<?php endfor; ?>
<?php if ($page < ceil($total / NUM_SHOPS)) : ?>
<a href="?page=<?php echo $page + 1; ?>">次</a>
<?php endif; ?>
</p>
</body>
</html>
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
いろいろ突っ込みどころ満載過ぎるソースなんだけど
・非推奨のmysql関数を使っている。
現在はmysqliやPDOを使うことが推奨されている。
PHPの公式のリファレンスマニュアルすら読まない無能?
・今時プレースホルダを使わずにエスケープ処理を使っている
・変数の存在チェックすらしない?isset()すらせずにerror_reportingでごまかすという非常識ソース。
>error_reporting(E_ALL & ~E_NOTICE);
>if (preg_match('/^[1-9][0-9]*$/', $_GET['page'])) {
>$page = (int)$_GET['page'];
>} else {
>$page = 1;
>}
などなど
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP PHP ページング データベース 1 2022/06/16 10:30
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP php my adminより取り出したデータ表示 2 2022/06/15 11:56
- PHP php エラー 2 2022/10/23 16:43
- PostgreSQL 画像とカテゴリーを出力したいのですが、取得の条件を付ける方法がわかりません。 2 2022/05/01 18:03
- PHP ランキングを表示する際の画像の大きさを固定することは可能でしょうか? <?php if ( has_ 1 2022/07/21 14:55
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPについて。
-
phpのheader("Location:#pos")...
-
PHP8を使うと、大量のWarningが...
-
PHPからCSVをアップロード後、m...
-
掲示板のセキュリティについて...
-
htmlspecialcharsが機能してい...
-
phpでcookieがうまく保存されない
-
PHPのセッション有効期限について
-
PHPSpreadsheetを使って関数を...
-
PHP一覧表示した項目にリンクを...
-
【スプレッドシート】順位のつけ方
-
PHPで画像の渡しが上手く行きま...
-
PHP MySQLに画像を直接保存
-
phpに関わる所での、form actio...
-
reuterの記事をbeautiful.soup....
-
PHPで入力フォームでデータを確...
-
PostgreSQLからCSV形式でエクス...
-
PHPのエラーの解消法について教...
-
[php初心者]サイトを見てデータ...
-
ゆゆにゃ。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
クラスファイルでエラーが出て...
-
mysql_real_escape_string?
-
phpとmysqlを使っています。
-
PHPのサンプルコードが意図した...
-
ページング実装で2ページ目以...
-
Flash8のユニコードについて。...
-
OpnePNEの構築において
-
php mysqlの文字化け(レンタル...
-
php+mysqlでINSERTで文字化けし...
-
Linuxで、Pearコマンドが使えな...
-
mysqliについて
-
for($i=1; $i<hoge; $i++)
-
mySQLに詳しい兄貴来てください
-
mysql_queryでのdelimiterの設...
-
PHP でMysqlを使用して日本語を...
-
FORMからPHP処理
-
イメージデータを文字列に変換...
-
mysqlでphpinfoと実際のバージ...
-
Mysql&PHPのアップグレードに...
-
PHPからmySQLへINSERT文の実行
おすすめ情報