多个产品使用php从mysql数据过滤

时间:2016-03-27 06:19:12

标签: php mysql

我想要使用php过滤和显示来自mysql的数据贝娄是我的输入过滤器

<form id="search_form">
            <div class="well">
                <h4 class="text-info">Search by Size</h4>
                <input value="32" class="sort_rang" name="size[]" value="New" type="checkbox"> 32
                <input value="36" class="sort_rang" name="size[]" value="fashion" type="checkbox"> 36
                <input value="38" class="sort_rang" name="size[]" value="New" type="checkbox"> 38
            </div>

            <div class="well">
                <h4 class="text-info">Search by price</h4>
                <input value="950" class="sort_rangn" name="price[]" value="New" type="checkbox"> 950
                <input value="1024" class="sort_rangn" name="price[]" value="fashion" type="checkbox"> 1024
                <input value="500" class="sort_rangn" name="price[]" value="New" type="checkbox"> 500
            </div>
          </form>

现在我们有两个过滤器大小和价格都在数组中搜索并在mysql中搜索

$sql="SELECT * FROM products";
    extract($_POST);

    if(isset($size)) 
        $sql.=" WHERE size IN (".implode(',', $size).")";

    if(isset($price))

        $sql.=" WHERE (price IN (".implode(',', $price)."))";

    $all_row=$db->query($sql);

它的工作正常,但只有一个条件是工作规模或价格,我使用一个表名产品

2 个答案:

答案 0 :(得分:2)

您可以尝试以下代码段:

AND

过滤成功的大小或价格。如果您想要匹配这两者,请在第一个OR语句中使用if而不是IF ELSEIF

注意:在代码中,如果在一个案例中设置了两个变量,那么您将收到语法错误。这是使用$price链。

假设设置了$size$sql个变量。然后,您的IF变量将受到query两个语句的影响。然后,最终生成的SELECT .... WHERE size IN (....) WHERE price IN (...) ...将有两个where子句,这将为语法错误生成错误。您生成的查询或多或少会如下所示:

<li ng-repeat="item in itemCart"> {{item.title}} <br> {{item.category}} &nbsp {{ formatCurrencyFunction({cost: item.price}) }} </li> BAD SYNTAX

答案 1 :(得分:0)

$sql="SELECT * FROM products";
extract($_POST);

if(isset($size) && isset($price))
    $sql.=" WHERE size IN (".implode(',', $size).") AND price IN (".implode(',', $price).")"; 
else if(isset($size)) 
    $sql.=" WHERE size IN (".implode(',', $size).")";

else if(isset($price))

    $sql.=" WHERE (price IN (".implode(',', $price)."))";

$all_row=$db->query($sql);

使用此代码,这对我有用。