使用2个列表框过滤搜索

时间:2014-08-23 03:48:23

标签: php mysql

美好的一天!

我在使用PHP过滤搜索时遇到问题。这是我的HTML表单:

<form action="index.php" action="get">
<input type="hidden" name="submit" value="true">
<label>Product
<select name="product">
<option value="Product 1">Product 1</option>
<option value="Product 2">Product 2</option>
<option value="Product 3">Product 3</option>
<option value="Product 4">Product 4</option>
<option value="Product 5">Product 5</option>
</select>
</label>

<label>City
<select name="city">
    <option value="Sample City 1">Sample City 1</option>
    <option value="Sample City 2">Sample City 2</option>
    <option value="Sample City 3">Sample City 3</option>
</select>
</label>

<input type="submit" value="Search">
</form>

如您所见,我有两个列表框,它们将作为搜索的两个类别。 这是我的搜索PHP代码:     

if(isset($_GET['submit'])) {

require("connect.php");

$product = $_GET['product'];
$city = $_GET['city'];

$query = "SELECT * FROM records";
$result = mysqli_query($con, $query) or die ("Could not connect to database"); 

echo "<table>";

while ($row = mysqli_fetch_array($result)) {
echo "<tr><td>";
echo $row['store'];
echo "</td><td>";
echo $row['city'];
echo "</td></tr>";
}

echo "</table>";
}

*这个PHP就在我的HTML形式之后。 我基本上需要做的是在数据库中显示与两个类别匹配的结果。

以下是我的数据库的样子: enter image description here

我的products1 - products5设置为sa TINYINT,因为我从TINYINT中读到的是除了0以外的任何值都被认为是TRUE而0是FALSE。

我的实际目标是只显示与用户设置的类别相匹配的记录。 如果用户将PRODUCTS类别设置为PRODUCT 1而CITY类别设置为SAMPLE CITY 4,则它将检查SAMPLE CITY 4中的PRODUCT 1是0 = NOT AVAILABLE还是1 = AVAILABLE。如下所示,如果它可用,那么它将显示可以找到它的STORE的名称。

但是在我的PHP代码中的这一特定行:
    $ query =“SELECT * FROM records”;

我在尝试修改它时遇到了麻烦。例如:
    $ query =“SELECT * FROM records WHERE $ product ='$ city'”;

它显示了我的die()消息。

还有其他方法可以用更简单的方式完成吗?提前谢谢!

1 个答案:

答案 0 :(得分:0)

试试这个

if(isset($_GET['submit'])) {

 require("connect.php");

 $product = $_GET['product'];
 $city = $_GET['city'];

 $column_name =  preg_replace('/\s+/', '', strtolower($product));

 $query = "SELECT * FROM test_table WHERE $column_name = 1 and city = '$city'";
 $result = mysqli_query($con, $query) or die ("Could not connect to database"); 

 echo "<table>";

 while ($row = mysqli_fetch_array($result)) {
  echo "<tr><td>";
  echo $row['store'];
  echo "</td><td>";
  echo $row['city'];
  echo "</td></tr>";
 }

 echo "</table>";
}

我认为这对你有帮助。