选择多个和单个数据过滤器 php 未定义变量:产品,供应商


Select multiple and single data filter php Undefined variable: product,supplier

我有 3 个选定的数据组、供应商和产品;我想按一个、两个或三个选定的数据一起过滤。

我使用此方法进行过滤,但它不起作用:

这是我的代码:

$sec_query = "";
$group= $_GET['group']; 
$supplier = $_GET['supplier']; 
$product= $_GET['product'];
if(isset($_GET['supplier']) && !empty( $_GET['supplier'])){
    $sec_query = " AND catalog.supplier = '$supplier' "; 
}
if(isset($_GET['product']) && !empty($_GET['product'])){
    $sec_query = " AND catalog.product = '$product' "; 
}
if (isset($_GET['group']) && !empty($_GET['group'])){
    $sec_query = " AND catalog.group = '$group' ";     
}
$sql = " SELECT group,id,product,supplier,SUM(total)as total,date_created FROM catalog WHERE 1=1 $sec_query AND date_created > '2014' GROUP BY group,id,product,supplier,date_created ORDER BY id";
$query = $conn->prepare($sql);
$query->execute();
$data_sql = $query->fetchAll(PDO::FETCH_ASSOC);

<form role="form" action='' method='GET'>
    <select name="group" id = "group" style="width: 100%;">
        <option value="group1" <? if($group== "group1" ){ echo "SELECTED = selected";} ?> >Group1</option>
        <option value="group2" <? if($group== "group2" ){ echo "SELECTED = selected";} ?> >Group2</option>
        <option value="group3" <? if($group== "group3" ){ echo "SELECTED = selected";} ?> >Group3</option>
    </select>
    <select name = "supplier" style="width: 100%;">
        <option selected="selected">
        <?php $sql_supplier = "SELECT supplier FROM  catalog GROUP BY supplier";
        $query_supplier = $conn->prepare($sql_supplier); 
        $query_supplier->execute();
        $data_supp = $query_supplier->fetchAll(PDO::FETCH_ASSOC);
        foreach ($data_supp as $data => $s):?>
        </option>
        <option value="<?php echo($s['supplier']); ?>"><?php echo($s['supplier']); ?></option>
        <?php
        endforeach;
        ?>
        </select>
        <select name = "product" style="width: 100%;">
            <option selected="selected">
            <?php $sql_product = "SELECT product FROM  catalog GROUP BY product";
            $query_product = $conn->prepare($sql_product); 
            $query_product->execute();
            $data_product = $query_product->fetchAll(PDO::FETCH_ASSOC);
            foreach ($data_product as $data => $p):
            ?>
            </option>
            <option value="<?php echo($p['product']); ?>"><?php echo($p['product']); ?></option>
            <?php
            endforeach;
            ?>
           </select>

谁能帮我?

这是一个如何制作它的想法。

if(isset($_GET['supplier']) && !empty( $_GET['supplier'])){
    $sec_query = " AND supplier = '$supplier' ";
} 
if(isset($_GET['product']) && !empty($_GET['product'])){
    $sec_query = " AND product= '$product' ";
}
if (isset($_GET['group']) && !empty($_GET['group'])){
    $sec_query = " AND group = '$group' "; 
}
$sql = " SELECT  group,id,product,supplier,SUM(total) as total,date_created FROM catalog WHERE 1=1 $sec_query AND date_created > '2014' GROUP BY group,id,product,supplier,date_created ORDER BY id";

试试这个

$condition = "";
$condition = $supplier.$product.$group."AND date_created > '2014'" ;
$condition = ltrim($condition,"AND");
 $sql = " SELECT group,id,product,supplier,SUM(total)as total,
         date_created FROM catalog WHERE ".$condition ." GROUP BY group,id,product,supplier,date_created ORDER BY id";

我希望它会有所帮助

if (isset($_GET['group']) && !empty($_GET['group']))
 {
   $group = "AND catalog.group = '$group' "; 
 }

为什么使用 catalog.group='$group';

我认为它应该是 catalog.group=$_GET['group'];