我想将高级搜索添加到我的网页
我使用此表单获取数据
<form action="advsearch.php" method="POST" >
Search <input type="text" name="oneword" size="20"> word
<p>Time <input type="radio" value="30" name="time">30 min
az <input type="radio" name="time" value="60">60 min
<input type="radio" name="time" value="120">120 min
<input type="radio" name="time" value="1000" checked>any</p>
<p> </p>
</p>
Cities
<?php
while($cities=mysql_fetch_array($whichcity)){
echo "<input type='checkbox' name='cities[]' value='$cities[cityname]'>$cities[cityname]";
}
?>
<p>Category
<?php
while($categories=mysql_fetch_array($whichcat)){
echo "<input type='checkbox' name='categories[]' value='$categories[catname]'>$categories[catname]";
}
?>
</p>
<p>Weather <input type="checkbox" name="weather[]" value="Rainy">Rainy
<input type="checkbox" name="weather[]" value="Cloudy">Cloudy
<input type="checkbox" name="weather[]" value="Clear">Clear
<input type="checkbox" name="weather[]" value="Foggy">Foggy</p>
<p> Person<input type="radio" name="person" value="2">1-2 person<input type="radio" name="person" value="4">3-4
person<input type="radio" name="person" value="6">5-6 person<input type="radio" name="person" value="100" checked>any
</p>
<p><input type="submit" value="Search"></p>
</form>
我从数据库获得了一些字段,无论如何我成功发布表单并获取数据,但我的搜索结果是错误的
我得到了这样的数据
$oneword = mysql_real_escape_string($_POST['oneword']);
$time = (int)$_POST['time'];
$cities= implode(",",$_POST["cities"]);
$categories= implode(",",$_POST["categories"]);
$weather= implode(",",$_POST["weather"]);
$person= (int)$_POST['person'];
这是sql查询
$sql= mysql_query("select * from mytable where time <= '".$time ."' and person = '".$person."' and category like '".$categories."' and cities like '".$cities."' and weather like '".$weather."' and word like '%".$oneword."%' or description like '%".$oneword."%' ");
那么,我该如何进行这样的高级搜索?
答案 0 :(得分:2)
您的查询返回的结果不正确,因为最终OR
运算符限定了descriptions
包含$oneword
的所有记录。相反,您需要使用()
将文本搜索条件组合在一起。
select *
from mytable
where time <= '".$time ."' and person = '".$person."'
and category in ('". implode("','", $_POST['categories']) ."')
and cities in ('". implode("','", $_POST['cities']) ."')
and weather in ('". implode("','", $_POST["weather"]) ."')
and (word like '%".$oneword."%' or description like '%".$oneword."%');