一直打印相同的表单,直到点击提交按钮


Keep printing same form until submit button is clicked

嗨,我是相当新的php,我目前正在制作一个网页,类似于超市使用的库存管理控制作为分配的一部分。我有以下的形式,其中收银员将输入产品Id和正在购买的项目的数量。

然后表单将调用另一个名为cashsale.php的php文件,该文件将接受这些输入并更新数据库中的表,以便超市货架上的库存水平与新数量(即旧数量-输入数量)保持一致,并且可以在需要重新订购时建议管理。

因为它是表单工作得很好,但是我被建议以一种方式编辑它,收银员可以在提交之前输入多个产品和数量(即表单将再次显示自己),并允许用户在实际将值提交给cashsale.php以操纵表之前编辑或删除任何项目。我似乎不知道如何才能做到这一点。

我想创建一个名为"添加"的新按钮,它将再次显示表单,即允许用户检查更多的项目,但我很困惑,如何做到这一点,以及如何我将能够更新表,然后因为我将有更多的然后只是2个输入。

有谁能帮我一下吗?提前感谢。下面是我的html表单:
center form action="cashsale.php" method ="post"
    Product ID: <input name= "id" type="int" > <br>
    Quantity:<input name="qty" type="int">
        <input type="button" name = "Add" onclick="add">
    <input type="Submit" name ="Submit" value = "Submit">
form center

我不允许使用html标签的形式和中心,所以我删除了<>。下面是对cashsale.php文件所做的一些修改,只是为了给出一个更清晰的示例。

$result = mysql_query("SELECT * FROM shelfingdetails where prodId =' " .$id. " '");
    if (!$result){
    die (mysql_error());
    }
    while ($row =mysql_fetch_array($result))
    {
       $qtyOnShelf= $row ['QtyOnShelf'];
       $max=$row['max'];
       $newQtyShelf=$qtyOnShelf-$qty;
    }
    $update=mysql_query("UPDATE shelfingdetails SET QtyOnShelf ='". $newQtyShelf. "' where prodId = '". $id. "';");

我希望有人能帮忙。谢谢!

你只需要传递一个数组。为此,您必须使用PHP或javascript生成输入(我将使用jQuery来保持代码美观和简单)。如果使用PHP:

// PHP
<?php
if(isset($_POST['submit']) && $_POST['submit']){
    //save data
} elseif(isset($_POST['Add']) && $_POST['Add']) {
    $max = (int)$_POST['max']
} else { $max = 1; }
?>
<form action="" method="post">
<?php
for($i = 0;$i < $max;$i++){
    ?>
    Product ID: <input name="id[]" type="int" > <br>
    Quantity: <input name="qty[]" type="int">
    <?php
}
?>
<input type="hidden" name="max" value="<?= $i; ?>" />
<input type="submit" name="Add" />
<input type="submit" name="Submit" value="Submit" />
</form>

如果你使用Javascript:

//HTML
<form action="" method="post" id="form">
    <div id="add">
        Product ID: <input name="id[]" type="int" > <br>
        Quantity: <input name="qty[]" type="int">
    </div>
    <input type="hidden" name="max" value="<?= $i; ?>" />
    <input type="button" name="Add" onclick="addRow();" />
    <input type="submit" name="Submit" value="Submit" />
</form>
// jQuery
function addRow(){
    $("#add").append("<br />Product ID: <input name='id[]' type='int' >" + 
                "<br />Quantity: <input name='qty[]' type='int'>");
}

您必须使用id[]qty[]将它们作为数组传递,并使用add按钮生成尽可能多的它们。像这样:

Product ID: <input name="id[]" type="int" > <br>
Quantity: <input name="qty[]" type="int"> <br>
Product ID: <input name="id[]" type="int" > <br>
Quantity: <input name="qty[]" type="int"> <br>
Product ID: <input name="id[]" type="int" > <br>
Quantity: <input name="qty[]" type="int">
<input type="button" name = "Add" onclick="add">

然后在背面使用for循环保存所有数据。

$max = count($_POST['id']);
$id = $_POST['id'];
$newQtyShelf = $_POST['qty'];
for($i = 0;$i < $max;$i++){
    $update=mysql_query("UPDATE shelfingdetails
        SET QtyOnShelf ='". (int)$newQtyShelf[i]. "'
        WHERE prodId = '". (int)$id[i]. "';");
}

我只是想向你展示这个想法,请不要使用这个特定的代码,因为你应该使用mysqli而不是mysql和mysqli_escape_string来确保用户不会提交错误的数据