我正在创建一个带有下拉列表的搜索功能,用户可以根据所选的下拉列表进行搜索,并将其显示在同一页面上。当我按下提交按钮时,它没有显示任何结果。
很抱歉,如果以前曾经问过这个问题,但我怀疑在PHP代码中我做错了但是我无法弄清楚原因。有人可以帮我指点一下吗?
这是我的搜索表单:
<h2>Search</h2>
<form name="search" method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
Keyword
<input type="text" name="searchq" id="searchq" size="30" placeholder="Enter keyword.."> By
<select name="searchopt" id="searchopt">
<option value=""></option>
<option value="Members">Members</option>
<option value="Journal">Journal</option>
<option value="Conference">Conference</option>
<option value="Awards">Awards</option>
<option value="Grants">Grants</option>
<option value="Patents">Patents</option>
<option value="Research Grants">Research Grants</option>
<option value="Book Chapter">Book Chapter</option>
<option value="Book Publications">Book Publications</option>
<option value="Other Publications">Other Publications</option>
</select>
<input type="submit" id="submit" name="submit" value="Search">
</form>
<br>
<p>
<h4>Results</h4>
</p>
这是我的PHP代码:
include ("includes/dbcon.php");
if(isset($_POST['searchq']) && $_POST['searchq'] != "")
{
if(isset($_POST['searchopt']) && $_POST['searchopt'] != "")
{
$escsearch = mysqli_real_escape_string($conn, $_POST['searchq']);
$searchval = preg_replace('#[^a-z 0-9]#i', '', $escsearch);
$opt = $_POST['searchopt'];
switch($opt)
{
case "Members":
$query = "SELECT * FROM members where memberName LIKE '%$searchval%'";
$res = mysqli_query($conn, $query) or die(mysqli_error());
$count = mysqli_num_rows($res);
if($count > 1)
{
$output .= "$count results for <strong>$escsearch</strong>.";
while($row = mysqli_fetch_array($res))
{
$name = $row['memberName'];
$pos = $row['position'];
$fac = $row['faculty'];
$email = $row['email'];
$int = $row['research_interests'];
echo "<table>
<tr>
<td>Name</td>
<td>Position</td>
<td>Faculty</td>
<td>E-mail</td>
<td>Research Interests</td>
</tr>
<tr>
<td>$name</td>
<td>$pos</td>
<td>$fac</td>
<td>$email</td>
<td>$int</td>
</tr>
</table>";
}
}else{
$output = "<p>No records found.</p>";
}
break;
}
}
}
答案 0 :(得分:0)
纠正你的情况
if($count > 1) => if($count >= 1)
好像你在数据库中只有一条记录
还定义$ output变量
答案 1 :(得分:0)
如果只有一条带有membername LIKE
lau的记录,那么您将无法获得该页面的任何输出。
此行表示脚本必须有多个结果才能继续... if($count > 1)
您可能希望它为if($count >= 1)
首先,您必须将$ output定义为空字符串... $output = '';
希望这有帮助
答案 2 :(得分:0)
这里有很多问题:
您的提交按钮不应具有name
属性,因为您没有对其执行任何操作。
改变这个:
<input type="submit" id="submit" name="submit" value="Search">
对此:
<input type="submit" id="submit" value="Search">
您的if
条件,如果找到一个结果,检查结果将返回false。
改变这个:
if($count > 1)
对此:
if($count > 0)
最后,您的$output
变量定义错误。使用.=
假设先前已定义$output
。
改变这个:
$output .= "$count results for <strong>$escsearch</strong>.";
对此:
$output = "$count results for <strong>$escsearch</strong>.";