【问题标题】:Live calculation on form field data is not inserting to database表单字段数据的实时计算未插入数据库
【发布时间】:2018-07-03 06:20:03
【问题描述】:

我有一些表单域。某些表单字段数据被禁用。表单字段就像实时计算。它计算得很好。即使它插入到数据库,但禁用的表单字段数据没有插入。我的 HTML 代码放在这里

<form method="POST" oninput="x.value=parseInt(a.value)-parseInt(a.value)*parseInt(b.value)/100;y.value=x.value-parseInt(c.value);x.value=parseInt(x.value);">
<?php
$sql= mysqli_query($con,"SELECT SUM(room_book.price) AS total, room.rn,room.rc,room.tbn,room.rp,room_book.room_number,room_book.bed_book,room_book.rand FROM room INNER JOIN room_book ON room.rn = room_book.room_number WHERE room_book.rand = '$rand'");
while ($row = mysqli_fetch_assoc($sql)) {
        ?>
        <div class="row ">
            <div class="form-group col-md-3">
                <label>Total Price</label>
                 <input value = "<?php echo $row['total']; ?>" id="a" name="price" disabled class="form-control" placeholder="(&#2547;)<?php echo number_format($row['total']); ?>">
            </div>

            <div class="form-group col-md-3">
                <label>Discount In Percentage(%)</label>
                 <input value = "0%" name="prcntg" required id="b" class="form-control" placeholder="0%">
            </div>

        </div>


        <div class="row ">
            <div class="form-group col-md-3">
                <label>Total Payable</label>
                 <input name="x" disabled class="form-control" placeholder="">
            </div>

            <div class="form-group col-md-3">
                <label>Total Paid</label>
                 <input name="paid"  id="c" required class="form-control" placeholder="(&#2547;)<?php echo number_format($row['total']); ?>">
            </div>
        </div>
        <div class="row ">
            <div class="form-group col-md-3">
                <label>Total Due</label>
                 <input name="y" for="c" disabled class="form-control" placeholder="(&#2547;)<?php echo number_format($row['total']); ?>">
            </div>
            <div style="margin-top:24px" class="form-group col-md-3">
                <button name="submit" type="submit" data-loading-text="Loading..." class="btn btn-success"><i class="glyphicon glyphicon-ok-sign"></i> Confirm Invoice</button>
            </div>
        </div>

                    <?php } ?>
        </form>

那些代码运行良好。见截图

Form field data


我的 PHP 代码

<?php
   if(isset($_POST['submit'])){
       $price  = $_POST['price'];
       $prcntg = $_POST['prcntg'];
       $x      = $_POST['x'] ;
       $paid   = $_POST['paid'];
       $y      = $_POST['y'] ;
       $sql = mysqli_query($con,"UPDATE `room_book` SET prcntg = '$prcntg', x = '$x', paid = '$paid', due = '$y', status = 'Active'");
       if($sql == true){
            echo "<script> window.open('final.php?final=$rand','_self'); </script>";
       }
?>

Database data


已禁用数据剩余为 0。我该如何解决。

【问题讨论】:

  • 没有重复值
  • 这个问题是一个旧问题的副本,这意味着那里给出的答案也适用于这里。禁用的表单字段根本不会与其余的表单数据一起发送。
  • 使用同名的隐藏输入类型

标签: javascript php html database


【解决方案1】:

当您禁用任何 HTML 元素或对任何 HTML 元素使用 disabled 属性时,它不会提交并且您看不到值。该名称本身表明该元素已禁用。请改用只读属性。

希望这会有所帮助。

【讨论】:

  • 但我需要获取禁用的表单字段数据。我需要给出价值。但我对如何赋予价值感到困惑。 &lt;form method="POST" oninput="x.value=parseInt(a.value)-parseInt(a.value)*parseInt(b.value)/100;y.value=x.value-parseInt(c.value);x.value=parseInt(x.value);"&gt;我计算过从此禁用表单字段数据。
  • 这就是我告诉你使用只读属性的原因。通过使用它,你可以看到你不能改变 HTML 元素的值,它就像禁用本身一样,但你仍然会在 $_POST 中获得值。
【解决方案2】:

那是因为您无法获得禁用的输入值。所以如果可以的话,你应该使用readonly

【讨论】:

  • 但我需要获取禁用的表单字段数据。我已经从这个
【解决方案3】:

disabled 表示您忽略返回到控制器的数据,因此它将为 null / 不存在。你应该使用只读

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-18
    • 1970-01-01
    • 2021-08-18
    • 2011-02-20
    • 2018-09-23
    • 2016-06-22
    • 1970-01-01
    • 2018-09-10
    相关资源
    最近更新 更多