在php foreach循环中的复选框删除任何被检查的内容

时间:2014-01-28 16:06:46

标签: php forms checkbox foreach sql-delete

enter image description here

    echo "<form name='input' action='admin_selecteren_voor_verwijderen.php' method='post'>";

    $sql_bestelling= "SELECT * FROM producten";
    foreach($dbh->query($sql_bestelling) as $row)
        {   

            $product_id=$row['product_id'];
            $product_naam=$row['product_naam'];
            $prijs=$row['prijs'];
            $foto=$row['foto'];


            echo "


            <br>
            <img src='$foto' height='70' width='50' border='0'>
            <b>$product_naam</b> <input type='checkbox' name='$product_naam' value='$product_naam'></br>
            </br></br></br>";

            //if (isset($_POST['submit'])){
            //  $sql = "DELETE FROM `producten` WHERE product_naam='$product_naam'";
            //  $query = $dbh->prepare( $sql );
            //  $result = $query->execute();
            //}


            }
if(!empty($_POST['checkbox'])) {
    foreach($_POST['checkbox'] as $check) {
        echo "check: ", $check; 
    }
}





    echo "  
    <input type='submit' value='Delete'>
    </form>";



?>

我想在我的网店管理员页面中有一个产品列表。每个产品都有一个复选框。我希望能够删除复选框的所有产品都被选中。但我不知道如何......以上就是我到目前为止所做的。添加的图片是它在页面上的外观。但是该页面是从具有foreach循环的数据库中选择的产品列表,如代码中所示。该复选框也在循环中。我不知道如何将每个检查的产品分配给变量,然后将其从数据库中删除。任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:1)

将所有复选框命名为delete[],并将产品名称放在每个复选框的值中。

示例:

<form action="..." method='post' > 
    user1<input type="checkbox" name="delete[]" 
                value="<?php echo $product_naam ?>" /><br />
    user2<input type="checkbox" name="delete[]" 
                value="<?php echo $product_naam ?>" /><br />
    user3<input type="checkbox" name="delete[]" 
                value="<?php echo $product_naam ?>" /><br />
    user4<input type="checkbox" name="delete[]" 
                value="<?php echo $product_naam ?>" /><br />
    <input type='submit' value='delete' />
</form>

删除查询:

<?php
if(isset($_POST['delete'])){
    $ids = $_POST['delete'];
    $sql = "DELETE FROM `producten` WHERE product_naam
                   IN('".implode("','", $ids)."')";
    //execute query
}
?>

答案 1 :(得分:1)

您正在寻找$_POST['checkbox'],但这不是您表单中的内容。将复选框命名为checkbox[],并使用$ product_naam作为值。

<input type='checkbox' name='checkbox[]' value='$product_naam'>

现在,您可以使用foreach循环对其进行循环并删除。

答案 2 :(得分:0)

您不应该将产品名称的复选框命名为“删除”或其他名称。然后,您可以使用foreach方法从数据库中删除它们,如下所示:

<?php

    echo "<form name='input' action='admin_selecteren_voor_verwijderen.php' method='post'>";

    $sql_bestelling= "SELECT * FROM producten";
    foreach($dbh->query($sql_bestelling) as $row)
        {   

            $product_id=$row['product_id'];
            $product_naam=$row['product_naam'];
            $prijs=$row['prijs'];
            $foto=$row['foto'];


            echo "


            <br>
            <img src='$foto' height='70' width='50' border='0'>
            <b>$product_naam</b> <input type='checkbox' name=delete' value='$product_naam'></br>
            </br></br></br>";

            //if (isset($_POST['submit'])){
            //  $sql = "DELETE FROM `producten` WHERE product_naam='$product_naam'";
            //  $query = $dbh->prepare( $sql );
            //  $result = $query->execute();
            //}


            }
if(isset($_POST['delete'])) {
    foreach($_POST['delete'] as $delete){ {
        $sql = "DELETE FROM producten WHERE product_naam= $delete"; 
        $query = $dbh->prepare( $sql );
        $result = $query->execute();

    }
}





    echo "  
    <input type='submit' value='Delete'>
    </form>";



?>

另外,在我看来,你错误地将“价值”误认为是“名字”,请阅读。阅读有关PDO的内容会很好,mysql并不安全。 http://www.php.net/manual/en/book.pdo.php