一个php的站内搜索,通过匹配表单传递过来的值来调用数据,form表单包括关键词输入、下拉选项,问题是搜索时结果好像只是匹配输入的关键词,下拉选项即使选中也没有作为匹配条件,我测试了下,选项若值不为空(有选中),确实可以传递给接收函数,我想可能是搜索功能有问题,但不知道是哪里?兄弟们帮忙看看:下面是form结构:
<form  method="post"  action="search.php?action=search">
<p>
<input  type="text" name="post"  />
<input type="submit" value="搜索" />
</p>
<p>分区<select  name="forum" >
<option value="" selected="selected"></option>
<option value="1">电脑</option>
<option value="2">手机</option>
</select>
</p>
<p>分类<select  name="category" >
<option value="" selected="selected"></option>
<option value="1">求助</option>
<option value="2">讨论</option>
<option value="3">原创</option>
</select>
</p>
</form> 这是search.php页面(下面是主要代码):
include"config.php";if(isset($_GET['action'])&&$_GET['action']=="search"){$searchp = "select * from posts where ptitle like '%".$_POST['post']."%' or pcontent like '%".$_POST['post']."%'";
  
if(isset($_POST['forum'])&&!empty($_POST['forum'])) $searchp.="and fpid='".$_POST['forum']."'";
if(isset($_POST['category'])&&!empty($_POST['category'])) $searchp.="and catpid='".$_POST['category']."'";$resultp=mysql_query($searchp);   echo"<table><tr><td>ID</td><td>标题</td><td>作者</td><td>分区</td><td>分类</td><td>发表时间</td></tr>";   while($rs=mysql_fetch_object($resultp)){
      echo '<tr><td>'.$rs->pid.'</td><td>'.$rs->ptitle.'</td><td>'.$rs->upid.'</td><td>'.$rs->fpid.'</td><td>'.$rs->catpid.'</td><td>'.$rs->ptime.'</td></tr>';   
}
      echo'</table>';} 我觉得可能是上面判断选项值的地方有问题,但不知道怎吗改,其他地方应该没啥问题,大家指点一下

解决方案 »

  1.   

    一看你的题目,就是知道,程序有问题,只要能把值传过去,哪能不能用呢!
    打印一下后台的GET 和  SQL语句!
      

  2.   

    可能我的帖子题目误导你了,我打印过POST变量好SQL语句,都能输出,而且POST变量值和选项对应,SQL语句类似:select * from posts where ptitle like '%提交%' or pcontent like '%提交%' and fpid='2' ,搜索“提交”后,好像结果里并没有限制住fpid='2'这个条件
      

  3.   

    模糊的条件用括号括起来,
    $searchp = "select * from posts where (ptitle like '%".$_POST['post']."%' or pcontent like '%".$_POST['post']."%')";