【问题标题】:How to multiple rows of a dynamic table to Mysql database with jAutoCalc plugin如何使用 jAutoCalc 插件将多行动态表写入 Mysql 数据库
【发布时间】:2018-05-04 06:25:59
【问题描述】:

我在 jAutoCalc 插件中有一个动态表,用于计算每行的值以及所有行的总值。有人可以分享将每个动态行插入 Mysql 数据库的代码吗?我正在插入一张我的桌子的图片Demo Table

这里的每一行都是自动添加的理论和实践标记;并且小计和总计也自动计算。但我无法将所有行发送到 Mysql 数据库。计算部分使用 jAutoCalc 插件完成。

这是我的表格格式:

<table name="cart">
                <tr>
                    <th></th>
                    <th>Name</th>
                    <th>Theory</th>
                    <th>Practical</th>
                    <th>Item Total</th>
                </tr>
                <tr name="line_items">
                    <td><button name="remove">Remove</button></td>
                    <td><select name="subject_name">
                            <option value="Eco">Eco</option>
                            <option value="Eng">Eng</option>
                        </select></td>
                    <td><input type="text" name="subject_theory" value="1"></td>
                    <td><input type="text" name="subject_practical" value="9"></td>
                    <td><input type="text" name="subject_total" value="" jAutoCalc="{subject_theory} + {subject_practical}"></td>
                </tr>


                <tr>
                    <td colspan="3">&nbsp;</td>
                    <td>Subtotal</td>
                    <td>&nbsp;</td>
                    <td><input type="text" name="sub_total" value="" jAutoCalc="SUM({subject_total})"></td>
                </tr>

                <tr>
                    <td colspan="3">&nbsp;</td>
                    <td>Total</td>
                    <td>&nbsp;</td>
                    <td><input type="text" name="grand_total" value="" jAutoCalc="{sub_total}"></td>
                </tr>
                <tr>
                    <td colspan="99"><button name="add">Add Row</button></td>
                    <td colspan="99"><button name="submit">Submit</button></td>
                </tr>
            </table>

这是我用于动态生成行的 jquery:

<script type="text/javascript">

            $(document).ready(function() {

                function autoCalcSetup() {
                    $('form[name=cart]').jAutoCalc('destroy');
                    $('form[name=cart] tr[name=line_items]').jAutoCalc({keyEventsFire: true, decimalPlaces: 0, emptyAsZero: true});
                    $('form[name=cart]').jAutoCalc({decimalPlaces: 0});
                }
                autoCalcSetup();


                $('button[name=remove]').click(function(e) {
                    e.preventDefault();

                    var form = $(this).parents('form')
                    $(this).parents('tr').remove();
                    autoCalcSetup();

                });

                $('button[name=add]').click(function(e) {
                    e.preventDefault();

                    var $table = $(this).parents('table');
                    var $top = $table.find('tr[name=line_items]').last();
                    var $new = $top.clone(true);

                    $new.jAutoCalc('destroy');
                    $new.insertAfter($top);
                    $new.find('input[type=text]').val('');
                    autoCalcSetup();

                });

            });

        </script>

【问题讨论】:

  • 用您的输入/示例数据和预期输出更新帖子,问题未解决。
  • 我正在插入我的演示表的图片。希望它能消除您的疑问。
  • 如果你已经创建了一个表然后共享表结构,或者你想创建表以及存储所有这些值。
  • 请创建具有自动计算功能的动态表,并将这些值存储到数据库中。我一直无法解决这个问题。
  • 查看下面发布的答案可能会解决您的问题。

标签: javascript php jquery mysql ajax


【解决方案1】:

在这里,我为您创建了一个包含 5 列的表格,如下所示,Total 字段不可能,因为该值将在一组行上计算。因此,您可以在从表格中选择数据的同时计算该值,正如我在下面逐步解释的那样。

因此,您只需将值插入“student_id”、“name”、“theory”、“practical”字段,即 4 个字段和第 5 列将由数据库本身计算。

mysql> create table mark_obtains(
    -> student_id int,
    -> name varchar(30) not null,
    -> theory int default 0,
    -> practical int default 0,
    -> item_total int GENERATED ALWAYS AS (theory+practical) VIRTUAL
    -> );
Query OK, 0 rows affected (0.39 sec)

mysql> insert into mark_obtains(student_id,name,theory,practical) values (1,'asd',5,6);
Query OK, 1 row affected (0.04 sec)

mysql> select * from mark_obtains;
+------------+------+--------+-----------+------------+
| student_id | name | theory | practical | item_total |
+------------+------+--------+-----------+------------+
|          1 | asd  |      5 |         6 |         11 |
+------------+------+--------+-----------+------------+
1 row in set (0.00 sec)

【讨论】:

  • 你能再检查一下我的问题吗?我已经添加了动态创建表格的代码格式。
  • 我没看懂这里的动态表是什么意思?我的理解是您有一个名为 XYZ 的网页,并且想要从 XYZ 将数据保存到 MySQL 表中。您可以简单地使用 Insert 语句并将值绑定到它们并执行它。如果网页上有很多行,则在里面创建一个循环,然后将循环迭代 x 次,其中 x 是网页上的行数。
  • 我试图理解的是我可以从表中添加/删除任意多的行。在图片中,有一个“添加行”按钮生成行,每行前面的“删除”按钮删除该特定行。
  • 所以,我们说网页的数据网格元素,它以表格的形式保存数据,对。现在我们的数据以表格的形式存储在数据库中,因此,如果您想从表格中选择数据,请使用“SELECT”并将数据库中的选择数据/行填充到元素的网页表格形式中。现在您可以编辑它们删除它们或者您可以添加新行。最后保存到数据库。要再次保存记录,您必须对所有新添加的行使用 Insert,并对刚刚更新的所有行使用 Update。就是这样。
  • 是的,我对新添加的行有问题。
猜你喜欢
  • 2017-01-13
  • 1970-01-01
  • 2013-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多