Sooda!
 閲覧数:204
少し前に質問させていただきましたが、質問がわかりにくかったので少し修正させていただきます。
どうかよろしくお願い致します。

こだわり条件の範囲でandで絞り込む検索ができないのですが、どのようにしたら実現できるのでしょうか?

多分、SQL文だけの問題ではなく、テーブルにも問題があると思いますのでテーブルの構造、SQL文をどのように変更すれば
kid(こだわりの範囲)をandで絞り込むような検索が実現できるのかご教授お願いしたいと思っております。

欲を言えばこだわりの範囲はor検索とand検索を切り替えれ可能にしたいと思っております。
切り替え可能にするにはHTMLのフォームを付け足さなければならないと思っており、少しややこしくなってしまいますが
何卒よろしくお願い致します。


概要は下記のようになっております。


//フォーム

<table>
<tr>
<th>こだわり条件</th>

<td>
<input type="checkbox" name="kid[]" value="1" <?php if (isset($_REQUEST['kid']) and in_array('1',$_REQUEST['kid'])) print 'checked'; ?>/>
新築
<input type="checkbox" name="kid[]" value="2" <?php if (isset($_REQUEST['kid']) and in_array('2',$_REQUEST['kid'])) print 'checked'; ?>/>
南向き
<input type="checkbox" name="kid[]" value="3" <?php if (isset($_REQUEST['kid']) and in_array('3',$_REQUEST['kid'])) print 'checked'; ?>/>
セキュリティ充実
<input type="checkbox" name="kid[]" value="4" <?php if (isset($_REQUEST['kid']) and in_array('4',$_REQUEST['kid'])) print 'checked'; ?>/>
市街地が近い<br />
<input type="checkbox" name="kid[]" value="5" <?php if (isset($_REQUEST['kid']) and in_array('5',$_REQUEST['kid'])) print 'checked'; ?>/>
内装リフォーム
<input type="checkbox" name="kid[]" value="6" <?php if (isset($_REQUEST['kid']) and in_array('6',$_REQUEST['kid'])) print 'checked'; ?>/>
システムキッチン
<input type="checkbox" name="kid[]" value="7" <?php if (isset($_REQUEST['kid']) and in_array('7',$_REQUEST['kid'])) print 'checked'; ?>/>
ペット可</td>
</tr>
</table>



$sql = 'SELECT DISTINCT * FROM bukken';


//名古屋の地域checkbox

if(isset($_POST['chiiki_id'])and is_array($_POST['chiiki_id'])){
$ary = array_filter($_POST['chiiki_id'], function($v) {return is_numeric($v);});
$sqlA = 'id IN (SELECT chiid FROM chiiki WHERE chiiki_id IN ('.implode(',', $ary).'))';
}else{ //print '地域がチェックされてません';
$sqlA = ' 1 ';


//kid絞り込み


if(isset($_POST['kid'])and is_array($_POST['kid'])){
$ary = array_filter($_POST['kid'], function($v) {return is_numeric($v);});
$sqlK = 'id IN (SELECT fid FROM fudou_kodawari WHERE kid IN ('.implode(',', $ary).'))';
}else{ //print '<br />こだわりがチェックされてません';
$sqlK = ' 1 ';
}


$sql.=' WHERE ('.$sqlK.')'; // こだわり条件
$sql.=' AND ('.$sqlA.')'; // エリア


以下省略

テーブルbukken

(物件名は適当です)

id bukken_name chiiki_id address price_min price_max station
1 名駅MID 1 愛知県名古屋市中村区則武本通x丁目xx番 40770000 55100000 名古屋駅
2 プレサン浄心 2 愛知県名古屋市西区城西x丁目xxxx番x 30800000 40001000 浄心駅
3 アネシア八事 3 愛知県名古屋市昭和区高峯町xxx番 50000000 62510000 八事日赤

テーブルchiiki
chiid chiiki_id
1 1
2 2
3 3
4 4
5 15

テーブルfudou_kodawari
fid kid
1 1
1 2
1 3
2 1
3 2
3 3
3 4
4 3
5 4
6 4
7 1
8 1
8 2
8 4
9 5
10 1
10 4

質問者:sin
質問日時:2014-08-10 14:12:24
カテゴリ:インターネット・パソコン>技術・プログラミング


↓↓現在集まっている回答 0〜0件/0件中
 
この質問を友達に教える
→ヘルプ
ほしい情報が見つからないときは
新しい質問をする

↑このページのトップへ
TOP マイページ ヘルプ