使用PHP基于复选框从mysql数据库中选择多个项目?

时间:2014-08-27 21:56:58

标签: php mysql

我试图根据复选框选择从mysql数据库中获取多个项目。

示例:

1-用户在页面上选择3个复选框,然后单击提交按钮。 在下一页上,将显示这3个产品。

我当前的代码是这样的:

第一页:

<div align="center">
<input style="float:left;" type="checkbox" name="check_list[]" value="'.$product_name.'" />
<img width="67" src="../images/'.$id.'.jpg"  /><br />
'.$product_name.'
</div>

上面的代码位于while loop,它运行正常。我应该从mysql数据库中获取所有产品。

第二页:

<?php
if(isset($_POST['submit'])){//to run PHP script on submit
if(!empty($_POST['check_list'])){
// Loop to store and display values of individual checked checkbox.
foreach($_POST['check_list'] as $selected){
//echo $selected."</br>";



include "../config/connect.php";
// This block grabs the whole list for viewing
$products_list = "";
$sql = "SELECT * FROM products WHERE product_name='$selected'";
$query = mysqli_query($db_conx, $sql);
$productCount = mysqli_num_rows($query); // count the output amount
if ($productCount > 0) {
    while($row = mysqli_fetch_array($query, MYSQLI_ASSOC)){ 
             $id = $row["id"];
             $product_name = $row["product_name"];
             $gender = $row["gender"];
             $products_list .= '<div align="center">
<input style="float:left;" type="checkbox" name="check_list[]" value="'.$product_name.'" />
<img width="67" src="../images/'.$id.'.jpg"  /><br />
'.$product_name.'
</div>';
    }
} else {
    $products_list .= "You have nothing";
}
}
}
}
?>
<?php echo $products_list; ?>

第二页上的代码只回显最后一个检查项目!

但我需要显示第一页上检查的所有项目。

有人可以帮我解决这个问题吗?

感谢。

2 个答案:

答案 0 :(得分:2)

不要做

$products_list = "";
循环中的

。 在

之前移动它
foreach($_POST['check_list'] as $selected){

答案 1 :(得分:1)

它打印最后一个检查项目,因为您正在重置每次循环交互时回显的字符串。使用此代码。

<?php
if(isset($_POST['submit'])){//to run PHP script on submit
    if(!empty($_POST['check_list'])){
    // Loop to store and display values of individual checked checkbox.
    $products_list = "";
        foreach($_POST['check_list'] as $selected){
        //echo $selected."</br>";



        include "../config/connect.php";
        // This block grabs the whole list for viewing
        $sql = "SELECT * FROM products WHERE product_name='$selected'";
        $query = mysqli_query($db_conx, $sql);
        $productCount = mysqli_num_rows($query); // count the output amount
            if ($productCount > 0) {
                while($row = mysqli_fetch_array($query, MYSQLI_ASSOC)){ 
                    $id = $row["id"];
                    $product_name = $row["product_name"];
                    $gender = $row["gender"];
                    $products_list .= '<div align="center">
                    <input style="float:left;" type="checkbox" name="check_list[]" value="'.$product_name.'" />
                    <img width="67" src="../images/'.$id.'.jpg"  /><br />
                    '.$product_name.'
                    </div>';
                }
            } else {
                $products_list .= "You have nothing";
            }
        }
    }
}
?>
<?php echo $products_list; ?>

我将$products_list移到了foreach循环之外。