• 締切済み

チェックボックス検索システム

<?PHP $con = mysql_connect('******.jp', '*********', '******'); if (!$con) { exit('データベースに接続できませんでした。'); } $result = mysql_select_db('******', $con); if (!$result) { exit('データベースを選択できませんでした。'); } $result = mysql_query('SET NAMES utf8', $con); if (!$result) { exit('文字コードを指定できませんでした。'); } $arr1 = array(); foreach($_POST['tiiki'] as $tiiki){ $arr1[] = " tiiki = '$tiiki' "; } $arr2 = array(); foreach($_POST['syoku'] as $syoku){ $arr2[] = " syoku = '$syoku' "; } $arr3 = array(); foreach($_POST['koyou'] as $koyou){ $arr3[] = " koyou = '$koyou' "; } $a = implode(" OR ",$arr1); $b = implode(" OR ",$arr2); $c = implode(" OR ",$arr3); $sql = "select * from kensaku where ($a) AND ($b)AND ($c) order by date desc"; print $sql; ?> <?php $con = mysql_connect('*****.jp', '******', '******'); if (!$con) { exit('データベースに接続できませんでした。'); } $result = mysql_select_db('*******', $con); if (!$result) { exit('データベースを選択できませんでした。'); } $result = mysql_query('SET NAMES utf8', $con); if (!$result) { exit('文字コードを指定できませんでした。'); } $result = mysql_query('SELECT * FROM kensaku', $con); while ($data = mysql_fetch_array($result)) { echo '<p>' . $data['tiiki'] . ':' . $data['syoku'] . ':' . $data['koyou'] . ':' . $data['kai'] . "</p>\n"; } $con = mysql_close($con); if (!$con) { exit('データベースとの接続を閉じられませんでした。'); } ?> これで表示されるのが、 select * from kensaku where ( tiiki = '豊岡市' ) AND ( syoku = '飲食' )AND ( koyou = 'バイト' ) order by date desc 豊岡市:飲食:バイト:オシイそば 豊岡市:製造:正社員:オシイ運輸 養父市:飲食:バイト:オシイ物産 です。一番目のphpデータはPOST文を受け取っただけでデータベース内から検索してくれないし、二番目のphpデータはデータべスにある情報を全て受け取っただけです。 僕はチェックされた情報をPOSTで受け取り、チェックされた内容に該当するデータだけデータベースから受け取り表示させたいんですが、どうすればいいですか?非常に困っています!!!!!!!!!!!!!!!!!!!!!!!!!

みんなの回答

  • tomaju
  • ベストアンサー率76% (84/110)
回答No.1

まぁ落ち着いて。 > 一番目のphpデータはPOST文を受け取っただけでデータベース内から検索してくれないし 一番のPHPスクリプトですが、 チェックされた情報をPOSTで受け取り、チェックされた内容に該当するデータだけ検索する、 そのためのSQL文を組み立てて、変数 $sql に格納するところまで、 一応できています。 後は、二番でやっているように mysql_query でSQL文を実行し、mysql_fetch_array で 結果を取得してみましょう。 ------------------------------------------------------------------------------- ...省略 $a = implode(" OR ",$arr1); $b = implode(" OR ",$arr2); $c = implode(" OR ",$arr3); $sql = "select * from kensaku where ($a) AND ($b)AND ($c) order by date desc"; print $sql; // SQL文を実行 $result = mysql_query($sql, $con); // 結果を1行ずつ配列として取得 while ($data = mysql_fetch_array($result)) { echo '<p>' . $data['tiiki'] . ':' . $data['syoku'] . ':' . $data['koyou'] . ':' . $data['kai'] . "</p>\n"; } ------------------------------------------------------------------------------- ※二番では mysql_query('SELECT * FROM kensaku', $con); のように、 全件を検索するSQL文を、mysql_query の第一引数のところで書いていますが、 こちらではあらかじめSQL文を格納した変数 $sql を mysql_query の第一引数に 渡しているところが二番と違います。

関連するQ&A