はじめて質問させて頂きます。今回質問する内容に類似した質問が過去にかなりの件数がありましたが、どうしても解らず質問させて頂く事をお許し願います。
「名前のキーワード」と「年齢の幅」を入力するフォームから成る「form.html」とそのデータを受け取る「search.php」があります。
「search.php」は「名前」と「年齢」のデータが500件ほど格納されているデータベース名「database」からデータを取ってきて、10件ごとに表示をしたいのですが、うまく表示されません。私が書いた「form.html」と「search.php」は以下の通りです。
「form.html」----------------------------
<html>
<head>
<title>名前と年齢を検索するフォーム</title>
</head>
<body>
<form method="post" action="search.php">
<input type="text" name="name">
<input type="text" name="age_min"> 歳 ~ <input type="text" name="age_max" > 歳
<input type="submit" name="submit" value="検索">
</form>
</body>
</html>
----------------------------------------
「search.php」(SELECT文に名前には「あいまい検索」を、年齢には「BETWEEN」を使っています)---------------------------------
<?
if (isset($_GET['pos'])){
$offset = $_GET['pos'];
} else {
$offset = 0;
}
$ln = 10;
//DB接続
$conn = mysql_pconnect ("localhost", "username", "password")
or die ('接続できませんでした');
mysql_select_db ("database",$conn);
//クエリ生成
$sql = "select name,age from search where name like '%$name%' and age between '$age_min' and '$age_max' limit $offset,$ln";
$res = mysql_query($sql);
$num_rows = mysql_num_rows($res);
if($num_rows == 0) $message = "該当するデータはありません";
else $message = $num_rows . "件ヒットしました";
echo "検索結果<br>";
echo "$message";
//SELECTで取得したレコードを出力
while($row = mysql_fetch_array($res)){
echo "<table border='1' cellpadding='0' cellspacing='0'>";
echo "<tr>";
echo "<td>".$row[name]."</td>";
echo "<td>".$row[age]."</td>";
echo "</tr>";
echo "</table>";
}
//[前へ]リンクの設定
$next_pos = $offset-$ln;
if ($next_pos >= 0) {
echo("<a href= ".$_SERVER['PHP_SELF']."?pos=$next_pos>[前へ]</a>");
}
//[次へ]リンクの設定
$next_pos =$offset+$ln;
$sql = "select * from search where name like '%$name%' and price between '$price_min' and '$price_max' limit $next_pos,$ln";
$res =mysql_query($sql);
if (mysql_num_rows($res) > 0) {
echo("<a href= ".$_SERVER['PHP_SELF']."?pos=$next_pos>[次ヘ]</a><br>");
}
?>
----------------------------------------------------------------
うまく表示されないというのは具体的に言いますと、例えば 検索結果が何百件あると想定される場合でも、いつも「10件ヒットしました」と表示され、その上[次ヘ]をクリックしても「該当するデータはありません」と表示されてしまいます。ちなみにエラー等は出ません。私が書いた上のコードは私なりに色々な参考ページを参照してのものなのですが。
どなたか、上のコードでおかしい箇所などご指摘頂けましたら、幸いでございます。どうぞアドバイスの程よろしくお願い致します。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
>いつも「10件ヒットしました」と表示され
limit で件数を絞っているので当然の結果でしょう。
一度 $sql = "select count(*) from search where name like '%$name%' and age between '$age_min' and '$age_max' で件数を調べてから,あたなの考えるSQL文をやればよいのではないでしょうか?
この回答への補足
NNori様、ありがとうございます。
>一度 $sql = "select count(*) from search where name like '%$name%' and age between '$age_min' and '$age_max' で件数を調べてから,あたなの考えるSQL文をやればよいのではないでしょうか?
具体的に、私のコードのどこに
$sql = "select count(*) from search where name like '%$name%' and age between '$age_min' and '$age_max'
を入れればよいのでしょうか?
あと「limit」を使ったSQL文はどの位置に書けばよいのでしょうか?
すみませんが、具体的コードでお示し頂けませんでしょうか?よろしくお願いします。
(訂正)
テーブル名は「search」で
58行目は
$sql = "select name,age from search where name like '%$name%' and price between '$age_min' and '$age_max' limit $next_pos,$ln";
です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP php ログイン 1 2022/11/01 00:24
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データを一括で処理する方法に...
-
フォームから送信した値とMySQL...
-
接続ができません
-
副問合せにLIKE文を使う方法は...
-
ERROR 1045 (28000) (using pas...
-
MySQLのテーブル作成でハイフン...
-
SQLのVARCHARとVARCHAR2の違い
-
参考書に従って入力したつもり...
-
MySQLカラム名は日本語と英数字...
-
INT型は金額の型に使用するべき...
-
【php+mysql】mysqlのレコード...
-
VBAで変数内に保持された二次配...
-
mysqlがインストールされている...
-
Float型の時の計算結果がおかしい
-
急に文字化けを起こすようにな...
-
MySQLのLOAD DATA INFILEコマン...
-
c言語でMySQLを利用するときの...
-
windows上のphpにおける全角ハ...
-
MYSQLサービス停止時にWindows...
-
MySQL Client API versionについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォームから送信した値とMySQL...
-
PHPにてSQLから取得したデータ...
-
プレースホルダを使った複数カ...
-
MySQLからのデータをページに1...
-
php+MySqlでの検索ページ
-
mysql sqlエラー
-
mysql+php リストボックスにつ...
-
フォームからmySQL-DBにデータ...
-
接続ができません
-
SQLのVARCHARとVARCHAR2の違い
-
副問合せにLIKE文を使う方法は...
-
MySQLカラム名は日本語と英数字...
-
ODP.NETのバージョン確認
-
旧filemakerで和暦(令和など)...
-
VBAで変数内に保持された二次配...
-
プライマリーキーの昇順でソー...
-
ERROR 1045 (28000) (using pas...
-
INT型は金額の型に使用するべき...
-
like句を使って日本語を検索す...
-
RPMのmysqlとmysql-serverの違い
おすすめ情報