首页 文章

php多选项搜索查询...?

提问于
浏览
0

嗨,我是新的PHP和搜索框,我创建了一个表格如下

<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>

Search.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'];

我想如果不匹配显示结果没有找到,否则它将被所有和逐个过滤

2 回答

  • 0

    获取变量后放置:

    $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: '');
    

    EDIT: After seeing your comments

    首先,您应该使用mysql_connect函数 Build 与数据库的连接 . 比方说,你有这段代码:

    $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'] . '
    '; echo $row['location'] . '
    '; echo $row['type']; }
  • 2
    $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'";
    

相关问题