一个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>';} 我觉得可能是上面判断选项值的地方有问题,但不知道怎吗改,其他地方应该没啥问题,大家指点一下
<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>';} 我觉得可能是上面判断选项值的地方有问题,但不知道怎吗改,其他地方应该没啥问题,大家指点一下
打印一下后台的GET 和 SQL语句!
$searchp = "select * from posts where (ptitle like '%".$_POST['post']."%' or pcontent like '%".$_POST['post']."%')";