如何使用数据库中的数据计算 Total、Tax

Posted

技术标签:

【中文标题】如何使用数据库中的数据计算 Total、Tax【英文标题】:How to count Total, Tax using data from database 【发布时间】:2019-07-29 03:51:18 【问题描述】:

所以我在 codeigniter 和一般的 web 开发中有点新,但是可以计算 Sub Total 和 Tax,自动将该值输入到 codeigniter 的某种输入框中吗?

例如:

我有一个模型可以加入一些列并将数据显示到一个表中

表模型.php

public function getPurchaseOrder()
    
        $query =$this->db->query('SELECT dkmno, kodeprod,kodebarang_op,qty_op,unit_op,price,catatan FROM order_product JOIN barang_dkm ON order_product.kodebarang_op = barang_dkm.kodebarang');
        return $query->result_array();
    

表格视图.php

<table class="table table-fixed table-bordered table-hover" style="width:100%;" id="tebal">
                                <thead>
                                    <tr>
                                        <th scope="col">DKM No </th>
                                        <th scope="col">Kode Produksi </th>
                                        <th scope="col">Kode Barang </th>
                                        <th scope="col">Deskripsi </th>
                                        <th scope="col">Jumlah/Quantity </th>
                                        <th scope="col">Unit </th>
                                        <th scope="col">Unit Price </th>
                                        <th scope="col">Sub Total </th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <?php foreach ($dataTabel as $kiki) : ?>
                                        <tr class="table-row">
                                            <td><?php echo $kiki["dkmno"]; ?></td>
                                            <td><?php echo $kiki["kodeprod"]; ?></td>
                                            <td><?php echo $kiki["kodebarang_op"]; ?></td>
                                            <td><?php echo $kiki["catatan"]; ?></td>
                                            <td><?php echo $kiki["qty_op"]; ?></td>
                                            <td><?php echo $kiki["unit_op"]; ?></td>
                                            <td><?php echo $kiki["price"]; ?></td>
                                            <td class="calc"><?php $a=$kiki["qty_op"]*$kiki["price"]; echo $a ?></td>
                                        </tr>
                                    <?php endforeach;?>
                                </tbody>
                            </table>

我想从上表中计算小计并在文本框或输入框中显示答案

如果您想知道小计、折扣和税码

<div class="row mt-5">
                    <div class="col-sm" id="kontol">
                        <div class="form-group">
                            <div class="row">
                                <div class="col-sm-3">
                                    <label for="SubTotal" class="control-label">Sub Total : </label>
                                </div>
                                <div class="col-sm-9">
                                    <input type="number" id="subTotal" name="SubTotal" value="" style="text-align: right;" class="form-control" disabled>
                                </div>
                            </div>
                        </div>
                        <div class="form-group">
                            <div class="row">
                                <div class="col-lg-3">
                                    <label for="Discount" class="label-control" id="Discount">Discount : </label>
                                </div>
                                <div class="col-lg-3">
                                    <div class="input-group">
                                        <input type="number" name="Discount" class="form-control" id="inputDiscount" value="" min="0" max="100" onchange="calculatedSubTotal()"><span class="input-group-addon">%</span>
                                    </div>
                                </div>
                                <div class="col-lg-6">
                                    <input type="number" name="SubTotalDiscount" value="" style="text-align: right;"  class="form-control" id="subTotalDiscount" disabled>
                                </div>
                            </div>
                        </div>
                        <div class="form-group">
                            <div class="row">
                                <div class="col-lg-3">
                                    <label for="Tax" class="label-control">Tax : </label>
                                </div>
                                <div class="col-lg-3">
                                    <div class="input-group">
                                        <input type="number" name="Tax" value="" min="0" max="100" class="form-control" id="inputTax" onchange="calculatedSubTotal()"><span class="input-group-addon">%</span>
                                    </div>
                                </div>
                                <div class="col-lg-6">
                                    <input type="number" name="SubTotalTax" style="text-align: right;" class="form-control" id="subTotalTax" value="" disabled>
                                </div>
                            </div>
                        </div>

我曾尝试查看提出相同问题的人,但我仍然需要详细了解 model.php、controller.php、view.php、script.js 的工作原理,如果您需要更多详细信息,请点击此处的链接我已经制作的用户界面:https://i.imgur.com/LSkrnMH.png

【问题讨论】:

你可以使用javascript来计算总数或者你想要的查询本身 你能检查我的答案吗? @HastaDhana 抱歉我没看到你的 【参考方案1】:

您可以使用 CodeIgniter 获得小计,但您必须使用 javascript 来计算税款,因为它涉及用户交互。

例如,您有这样的小计输入:

    <div class="form-group">
        <label class="col-sm-3 control-label" for="SubTotal">Sub Total</label>
        <div class="col-sm-9">
            <input type="number" name="SubTotal" id="subTotal" class="form-control" value="" title="Sub Total" disabled><br/>
        </div>
    </div>
    <div class="form-group">
        <label class="col-sm-3 control-label" for="Discount">Discount</label>
        <div class="col-sm-9">
            <div class="col-sm-6">
                <div class="input-group input-group-md">
                    <input type="number" name="Discount" id="inputDiscount" class="form-control" value="" title="Discount" min="0" max="100" onchange="calculateSubTotal()"><span class="input-group-addon">%</span>
                </div>
            </div>
            <div class="col-sm-6">
                <input type="number" name="SubTotalDiscount" id="subTotalDiscount" class="form-control" value="" title="Subtotal After Discount" disabled><br/>
            </div>
        </div>
    </div>
    <div class="form-group">
        <label class="col-sm-3 control-label" for="Tax">Tax</label>
        <div class="col-sm-9">
            <div class="col-sm-6">
                <div class="input-group input-group-md">
                    <input type="number" name="Tax" id="inputTax" class="form-control" value="" title="Tax" min="0" max="100" onchange="calculateSubTotal()"><span class="input-group-addon">%</span>
                </div>
            </div>
            <div class="col-sm-6">
                <input type="number" name="SubTotalTax" id="subTotalTax" class="form-control" value="" title="Subtotal After Tax" disabled><br/>
            </div>
        </div>
    </div>

然后您可以设置小计值并计算折扣后和税后的小计值,如下所示:

<script>
    jQuery(function () 
        let sum = 0.0;
        jQuery('.calc').each(function() 
            sum += parseInt(jQuery(this).text());
        );
        jQuery("#subTotal").val(sum);
    );
    function calculateSubTotal() 
        let subtotal = jQuery("#subTotal").val();
        jQuery("#subTotalDiscount").val(subtotal - (Math.round((jQuery("#inputDiscount").val() / 100) * subtotal)));
        let subtotal_discount = jQuery("#subTotalDiscount").val();
        jQuery("#subTotalTax").val(+subtotal_discount + (Math.round((jQuery("#inputTax").val() / 100) * subtotal_discount)));
    
</script>

这将使用 javascript 设置所有小计。

【讨论】:

您是否将id="subTotal" 分配给Sub Total 输入?您还收到任何控制台消息吗?另外,你能分享一下小计、折扣和税收输入代码吗? 是的,我确实分配了我的小计 ID,是的,我刚刚编辑了我的问题 我看到您已将代码中的calculateSubTotal() 重命名为calculatedSubTotal(),您能否显示javascript 代码? 我尝试的javascript是你写的 没有错误,只是没有显示值【参考方案2】:

试试这个:

$this->db->select_sum('your_column_to_calculate');
$this->db->select('your_column_to_calculate');
$this->db->from('price');
$this->db->get();

或者像这样:

query = $this->db->query('SELECT sum(your_column_to_calculate) FROM price');

希望对你有帮助

【讨论】:

可以告诉我如何对连接表求和吗?就像我刚刚添加的代码【参考方案3】:

这是javascript代码,计算唯一的计算行并将结果显示在小计文本框中,它会自动加载:

    <script>
        $(document).ready(function()               

                    var hh2 = 0;              
                    $('#tebal > tbody  > tr').each(function() 
              var price = $(this).find('.calc').val();
                hh2 += parseFloat(price);                   
                    );
$('#SubTotal').val(hh2);
            );
</script>

【讨论】:

如果我输入tax 10%的值,它会输出subtotal*tax的值 你收到了吗【参考方案4】:

你可以用php本身计算所有的总和

将变量 $subtotal 设置为零,并在每个循环中添加 $subtotal

<?php 
$subtotal = 0;
foreach ($dataTabel as $kiki) : ?>
<tr class="table-row">
    ....
</tr> <?php $subtotal = $subtotal+$kiki["qty_op"]*$kiki["price"]; endforeach;?>

希望你能明白。

【讨论】:

以上是关于如何使用数据库中的数据计算 Total、Tax的主要内容,如果未能解决你的问题,请参考以下文章

如何使用熊猫规范化来自excel文件的嵌套字典数据

如何将任意小数位数的点转换为逗号

如何将结果“TOTAL”、“USER”和类型作为数据库中的值?

如何使用 Bonferroni 校正计算数据框中每一行的超几何测试

TCP数据报如何到达客户端计算机?

如何修复 WooCommerce 中的“未捕获的错误:在 null 上调用成员函数 get_tax_class()”?