0

我正在尝试使用搜索框,我创建了一个如下表单:

<form method="post" action="search.php">
 <select name="purpose">
 <option value="" selected="selected">-any-</option>
 <option value="For Sale">For Sale</option>
 <option value="For Rent">For Rent</option>
 </select>

 <select name="type">
 <option value="" selected="selected">-any-</option>
 <option value="Bungalow">Bungalow</option>
 <option value="Apartment">Apartment</option>
 </select>

 <select name="location">
 <option value="" selected="selected">-any-</option>
 <option value="Norway">Norway</option>
 <option value="Itley">Itley</option>
    </select>
 <input type="submit" value="Search">
</form>

搜索.php

我正在尝试使用这些查询但遇到问题:

$purpose=$_POST['purpose'];
$type=$_POST['type'];
$location=$_POST['location'];

如果我像这样输入 AND 查询:

SELECT * FROM test WHERE purpose='$purpose' AND location='$location' AND type='$type'

然后它不会一一过滤结果,它显示为空白。

如果我OR这样查询:

SELECT * FROM test WHERE purpose='$purpose' OR location='$location' OR type='$type'

然后它过滤混合结果。

我想如果全部选择它过滤(目的>>类型>>位置)并且如果选择一个然后按此过滤但确切的结果显示

Result not found!

编辑在评论中添加更新:

我正在这样做,但它显示错误:

$qry = "SELECT * FROM test WHERE 1=1";

if($purpose!="")
  $qry .= " AND purpose='$purpose'";

if($location!="")
  $qry .= " AND location='$location'";

if($type!="")
  $qry .= " AND type='$type'";

while ($row = mysql_fetch_array($sql)) 

echo $row['purpose']; 

echo $row['location']; 

echo $row['type']; 

我想要如果不匹配显示结果未找到,否则它会逐一过滤。

4

2 回答 2

2

在获得变量后放置:

$sql = array();

if (!empty($purpose)) {
    $sql[] = "purpose='$purpose'";
}

if (!empty($type)) {
    $sql[] = "type='$type'";
}

if (!empty($location)) {
    $sql[] = "location='$location'";
}

$sql = implode(' AND ', $sql);
$sql = "SELECT * FROM test" . (!empty($sql)?: " WHERE " . $sql: '');

编辑:看到你的评论后

首先,您应该使用 mysql_connect 函数连接到数据库。例如,假设您有这段代码:

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');

if (!$link) {
    die('Could not connect: ' . mysql_error());
}

在 $link var 现在你有你的 mysql 句柄。这段代码必须放在您想使用 mysql 连接的每个页面的第一处。一旦你有了 SQL 语句(在我第一次编写的代码中,$sql var),在之后使用它:

$result = mysql_query($sql);

if (mysql_num_rows($result) === 0) {
    echo 'Result not found';
}

while ($row = mysql_fetch_array($result)) {
   echo $row['purpose'] . '<br/>';
   echo $row['location'] . '<br/>';
   echo $row['type'];
}
于 2012-08-07T10:20:08.830 回答
0
$qry = "SELECT * FROM test WHERE 1=1";

if($purpose!="")
  $qry .= " AND purpose='$purpose'";

if($location!="")
  $qry .= " AND location='$location'";

if($type!="")
  $qry .= " AND type='$type'";
于 2012-08-07T10:16:33.937 回答