如何使用复选框删除由php和sql生成的HTML表行

时间:2015-11-23 00:11:33

标签: php html mysql sql-server checkbox

我试图删除 - 使用复选框 - 使用PHP填充SQL数据的HTML表行。我是新手,所以我很感激我的代码有任何改进。 (特别是SQL注入,我在研究时读了很多次)

带有表格的HTML的一部分 - inv_main.php

...
<div class="mid">
    <h1>Inventory</h1>
        <div class="content">
            <!-- buttons -->
                <div class="inv_btn">
                    <a href="add_form.php" type="button">Add</a>

                    <!-- button to press to delete ticked checkboxes -->
                    <form action="inventory.php" method="post">
                        <input name="delete" type="submit" id="delete" value="Delete"/>
                    </form> 

               </div>

            <!-- TABLE -->
                <div id="inv_tbl">                  
                    <table class="table table-striped" id="tblSearch">
                        <thead>
                            <tr>
                                <th>Product Name</th>
                                <th>Supplier Name</th>
                                <th>Category</th>
                                <th>Unit Price</th>
                                <th>Retail Price</th>
                                <th>Est. profit per unit</th>                     
                            </tr>
                        </thead>

                        <tbody>
                            <?php foreach($allInfo as $info): ?>
                                <tr>
                                    <td> <?= $info['product'] ?> </td>
                                    <td> <?= $info["supplier_name"] ?> </td>
                                    <td> <?= $info["category"] ?> </td>
                                    <td>$ <?= $info["unit_price"] ?> </td>
                                    <td>$ <?= $info["retail_price"] ?> </td>
                                    <td>$ <?= number_format(($info["unit_price"] - $info["retail_price"]), 2) ?></td>
                                    <td><input type="checkbox" name="checkbox[<?= $info['product'] ?>"] id="checkbox[]" value="<?= $info['product'] ?>" method="post"/></td>

                                </tr>
                            <?php endforeach ?>    
                        </tbody>
                    </table>
              </div>
        </div>
</div>
...

PHP - inventory.php

<?php
    /**
     *  inventory.php
     *  configures the inventory page.
     */

    // configuration
    require("../includes/config.php");
    require("../includes/render_dash.php");

    // if user reached page via GET...
    if($_SERVER["REQUEST_METHOD"] == "GET")
    {
        // get all the info from the inventory database
        $allInfo = [];
        $getInfo = query("SELECT * FROM inventory WHERE id = ?", $_SESSION["id"] );
        foreach($getInfo as $info)
        {
            $allInfo[] = [
                "product" => $info["product"],
                "unit_price" => number_format($info["unit_price"], 2),
                "retail_price" => number_format($info["retail_price"], 2),
                "supplier_name" => $info["supplier_name"],
                "category" => $info["category"],
            ];
        }


        // render HTML
        render("inv_main.php", ["title" => "Inventory", "allInfo" => $allInfo ] );
    }

请注意评论<!-- button to press to delete ticked checkboxes -->后面的'表单'和tbody标记内的最后一个表数据。

我已经看到了类似的问题,但我仍然无法弄明白。如果有帮助,库存数据库中的PRIMARY KEYS是用户的idproductid用于$_SESSION,因此使用它会删除所有库存数据,例如用户ID#30,因此我正在尝试访问产品,这是一个字符串。

0 个答案:

没有答案