![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
PHP&MYSQLでチェックボックスを使用した絞込み検索システムを制作しようと思っています。
検索機能の内容は
□居酒屋□レストラン□美容室
のチェックボックスに複数また、いずれかにチェックをして該当されたお店の写真(一枚)と説明文を1ページ20店舗ずつ表示したい思っています。
現在、MYSQLにデータベース、テーブルをつくりそれをチェックボックス用のHTMLとデータ取得用のPHPでMYSQLに接続、データを読み出すことはまでは出来たのですがチェックボックスで絞込みが出来ない状態で作業がとまっています。どなたかにご教授お願いしたいと思い質問させていただきました。よろしくお願い致します。
また、画像はどこに格納しておくのが良い方法なのでしょうか?
ソースは
select.html
<body>
<form name="form" action="search.php" method="post">
<input name="key[1]" value="居酒屋" type="checkbox" />居酒屋<br>
<input name="key[2]" value="レストラン" type="checkbox" />レストラン<br>
<input name="key[3]" value="美容室" type="checkbox" />美容室<br>
<p><input value="検索開始" type="submit" /></p>
</form>
</body>
search.php
<?php
$link = mysql_connect('localhost', 'root', 'pass');
if (!$link) {
die('接続失敗です。'.mysql_error());
}
$db_selected = mysql_select_db('mysqltest', $link);
if (!$db_selected){
die('データベース選択失敗です。'.mysql_error());
}
if($debug) print_r($HTTP_POST_VARS);
//クエリ生成
$query = "SELECT id,name,state FROM personal_info ";
mysql_set_charset('utf8');
//検索条件生成
//名前
if(!empty($name)) {
$value = addslashes($value);
$where = "value = '$value' && ";
}
if(!empty($where)) {
$where = substr($where, 0, -4);
$where = "WHERE " . $where;
}
$query .= $where;
if($debug) {
print "<BR><BR>";
print $query;
}
$result = mysql_query($query);
$num_rows = mysql_num_rows($result);
if($num_rows == 0) $message = "該当するデータはありませんでした";
else $message = $num_rows . "件ヒットしました";
?>
検索結果<br>
<?=$message?>
<table border=0>
<? while($row = mysql_fetch_assoc($result)): ?>
<tr><td><?=$row[name]?></td></tr>
<? endwhile; ?>
</table>
<a href="select.html">再検索</a>
環境
XAMPP 1.3.0.1
PHP 5.2.9.9
MYSQL 5.1
また、この検索システムに関する書籍やサイトがありましたら教えて頂けたらうれしいです。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
検索条件がよくわかりませんが・・・
OR条件ならたとえばこういうかんじで?
<form>
<div><input type="checkbox" name="key[]" id="key_1" value="居酒屋" /><label for="key_1">居酒屋</label></div>
<div><input type="checkbox" name="key[]" id="key_2" value="レストラン" /><label for="key_2">レストラン</label></div>
<div><input type="checkbox" name="key[]" id="key_3" value="美容室" /><label for="key_3">美容室</label></div>
<div><input value="検索開始" type="submit" /></div>
</form>
<?PHP
$query = "SELECT id,name,state FROM personal_info WHERE 1";
$key=$_REQUEST["key"];
$where ="";
foreach((array) $key as $val){
if($where!="") $where .=",";
$where .="'".mysql_escape_string($val)."'";
}
if(is_array($key))$query .=" AND value IN (".$where .")";
print $query;
?>
この回答への補足
yambejpさま
回答ありがとうございます。
少しソースを書き直してand or 検索までは出来たのですが、チェックボックスでの検索が出来ないでいます。
1. select.html
2.
3. <form name="form2" action="search.php" method="post">
4. <input type="text" name="keyword" size="25">
5. <input type="submit" name="search" value="検索"><br />
6. <input type="radio" checked name="searchSelect" value="AND">AND
7. <input type="radio" name="searchSelect" value="OR">OR
8. <input type="checkbox" name="check[]" value="居酒屋" />居酒屋
9. <input type="checkbox" name="check[]" value="レストラン" />レストラン
10. <input type="checkbox" name="check[]" value="カフェ" />カフェ
11. <input value="検索開始" type="submit" />
12. </form>
1. search.php
2.
3. <?php
4. //ファイルを読み込み
5. function executeQuery($sql){
6. $url = "localhost";
7. $user = "root";
8. $pass = "pass";
9. $db = "shop";
10.
11. // MySQLへ接続する
12. $link = mysql_connect($url,$user,$pass) or die("MySQLへの接続に失敗しました。");
13.
14. // データベースを選択する
15. $sdb = mysql_select_db($db,$link) or die("データベースの選択に失敗しました。");
16. mysql_set_charset('utf8');
17. // クエリを送信する
18. $result = mysql_query($sql, $link) or die("クエリの送信に失敗しました。<br />SQL:".$sql);
19.
20. // MySQLへの接続を閉じる
21. mysql_close($link) or die("MySQL切断に失敗しました。");
22.
23. //戻り値
24. return($result);
25. }
26.
27. //データを取得する
28. $searchSelect = $_POST['searchSelect'];
29. $keyword = $_POST['keyword'];
30. $keyword = ereg_replace("[ ]+", " ", $keyword);
31. $keyword = trim($keyword);
32.
33. //検索キーワード未入力時
34. if(empty($keyword)){
35. print "<html>";
36. print "<head><title>未入力</title></head>";
37. print "<body>";
38. print "検索キーワードが入力されていません。";
39. print "<p><a href=\"select.php\" target=\"_self\">全件表示へ</a><p>";
40. print "</body>";
41. print "</html>";
42. exit;
43. }
何が間違っているのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
mysql データ更新
-
検索結果にリンクを生成
-
接続ができません
-
phpとmysqlを使っています。
-
LIMIT で条件を満たしているの...
-
バージョン3.23.53からアップグ...
-
phpMyAdminについて
-
PHP+MySQL 接続できません
-
Float型の時の計算結果がおかしい
-
ADOのバージョンを確認する方法
-
MYSQL
-
PHP+ApacheでMySQLに接続できな...
-
SQLのVARCHARとVARCHAR2の違い
-
MYSQLで日本語が入力できない
-
”MySQL”以前は実行できたのです...
-
ページング実装で2ページ目以...
-
phpMyAdimnとコマンドラインで...
-
MySQLとEclipseの接続方法について
-
ODP.NETのバージョン確認
-
MySQLでエラーがでて前に進めま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォームから送信した値とMySQL...
-
PHPにてSQLから取得したデータ...
-
mysql sqlエラー
-
mysqlで作ったテーブルをphpで...
-
pdfファイルの管理システム
-
MySQLからのデータをページに1...
-
PHPでMySQLを使った検索のプロ...
-
mysql データ更新
-
プレースホルダを使った複数カ...
-
検索機能
-
MySQLでの順位付けについて
-
データを一括で処理する方法に...
-
PHPでMySQLを使った検索のプロ...
-
PDOでDB ページング
-
配列の要素でmysqlに問い合わせ
-
mysql+php リストボックスにつ...
-
MySQLでデータ表示
-
mysqlの置換について2
-
PHP+MYSQLで検索画面を作成し...
-
PHP&MYSQLでの検索システムにつ...
おすすめ情報