保持打印相同的表单,直到单击提交按钮

时间:2014-05-19 08:36:56

标签: php html forms

嗨我对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标签,所以我删除了&lt;取代。以下是在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. "';");

我希望有人可以提供帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

你只需要传递一个数组。为此,你必须使用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[]将它们作为数组传递,并使用添加按钮根据需要生成尽可能多的数组。像这样:

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来确保用户不提交错误数据。