我试图添加搜索功能。 我希望它像这样工作:例如,如果我有5个字段,而用户只在2中写入,则搜索将仅基于2个字段。我的意思是在所有5个字段中写信息不是必要的,我希望搜索只会在填充的字段中发生。
现在只有我会在所有领域写一些东西(现在我有2个)它才有效。如果我只在一个字段中写,它不会显示任何内容。
代码:
<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div id="container">
<h1>Поиск</h1>
<form action="search_form.php" method="post">
<p>Направление</p>
<input type="text" name="course" />
<p>Форма обучения</p>
<input type="text" name="form" />
<input type="submit" value="Искать">
</form>
<?php
$db = mysql_connect("localhost", "root", "") or die (mysql_error ());
mysql_select_db("university", $db) or die(mysql_error());
$w = array('TRUE');
if (isset($_POST['course']))
{
$course = $_POST['course'];
$w[] = "course='$course'";
}
if (isset($_POST['form']))
{
$form = $_POST['form'];
$w[]= "form='$form'";
}
$where = implode($w, ' AND ');
$query = ('SELECT * FROM news WHERE '.$where);
$result = mysql_query($query,$db);
if($result !== false)
{
$news = mysql_fetch_array($result);
while($news = mysql_fetch_assoc($result)) {?>
<tr>
<td><?=$news['id']?></td>
<td><?=$news['program']?></td>
</tr><?
}
}
else
{
echo 'Sorry, we didn't find anything.';
}?>
</div>
</body>
</html>
答案 0 :(得分:1)
您容易受到SQL injection attacks的攻击。在使用此代码执行任何其他操作之前,请先了解并解决此问题。
另外你的逻辑有问题:mysql_query()
在错误时返回false。没有结果的查询 NOT 错误,仍然返回有效的查询句柄。它只有0行。
$result = mysql_query($query);
if ($result === false) {
die(mysql_error());
} else if (mysql_num_rows($result) == 0) {
die("No results");
} else {
... display results
}