jquery - 使用动态和静态输入php序列化并插入到mysql表单

标签 jquery mysql ajax serialization

我需要使用序列化 jquery ajax 调用保存具有静态和动态表的表单输入。

该表单有两个动态表和两个用于收据编号和总金额的字段。我需要使用 save_deposit 按钮调用 ajax。需要将数据作为insert保存在mysql db中。

我尝试通过 post 保存一个动态表,并将 php 代码保存在保存 php 文件中。我想做的是通过ajax调用来完成这个功能。

{
<form id="myform" method="POST">
                <div class="panel panel-success">
                    <div class="panel-heading">
                        <h4>Savings | Loans Deposits</h4>
                    </div>
                    <div class="panel-body">
                        <div class="row">
                            <div class="col-md-3">
                                <label>Member</label>
                                <select name="member_id" id="member_id" class="form-control">
                                    <option value="">Select Member</option>
                                    <?php
                                    $query = "SELECT * FROM users_table ORDER BY id ASC";
                                    $result = mysqli_query($conn, $query);
                                    while($row = mysqli_fetch_array($result))
                                    {
                                        echo '<option value="'.$row["id"].'">'.$row["username"].'</option>';
                                    }
                                    ?>
                                </select>
                            </div>

                        </div>
                        <hr>

                        <section id="savings">
                            <hr>
                            <div class="row">
                                <div class="col-md-2">
                                    <INPUT class="btn btn-primary" type="button" value="Add Savings Payment" onclick="addRow('dataTable')" />
                                </div>
                                <div class="col-md-2">
                                    <INPUT class="btn btn-danger" type="button" value="Delete Selected Payment" onclick="deleteRow('dataTable')" />
                                </div>

                            </div>
                            <hr>
                            <div class="row">
                                <div class="col-md-10">
                                    <TABLE class="table table-bordered" id="dataTable">
                                        <TR>
                                            <TD><INPUT class="form-control col-md-2" type="checkbox" name="chk"/></TD>

                                            <TD>

                                                <select name="savings_account_number[]" id="savings_account_number" class="form-control">
                                                    <option value="">Select Member</option>
                                                    <?php
                                                    $query = "SELECT * FROM savings_account_table ORDER BY account_number ASC";
                                                    $result = mysqli_query($conn, $query);
                                                    while($row = mysqli_fetch_array($result))
                                                    {
                                                        echo '<option value="'.$row["account_number"].'">'.$row["account_number"].'</option>';
                                                    }
                                                    ?>
                                                </select>
                                            </TD>

                                            <TD>

                                                <INPUT class="form-control text-right" type="text" name="savings_deposit_amount[]" onkeyup="total()" onkeypress="return isNumber(event)"/>

                                            </TD>

                                        </TR>
                                    </TABLE>
                                </div>


                            </div>
                            <hr>

                        </section>
                        <section id="loans">
                            <hr>
                            <div class="row">
                                <div class="col-md-2">
                                    <INPUT class="btn btn-primary" type="button" value="Add Loans Payment" onclick="addRow('loans_table')" />
                                </div>
                                <div class="col-md-2">
                                    <INPUT class="btn btn-danger" type="button" value="Delete Selected Payment" onclick="deleteRow('loans_table')" />
                                </div>

                            </div>
                            <hr>
                            <div class="row">
                                <div class="col-md-10">
                                    <TABLE class="table table-bordered" id="loans_table" width="350px" border="1">
                                        <TR>
                                            <TD><INPUT class="form-control" type="checkbox" name="chk"/></TD>

                                            <TD>
                                                <label>Select Loans Account</label>
                                                <select name="loans_account_number[]" id="loans_account_number" class="form-control">
                                                    <option value="">Select Member</option>
                                                    <?php
                                                    $query = "SELECT * FROM savings_account_table ORDER BY account_number ASC";
                                                    $result = mysqli_query($conn, $query);
                                                    while($row = mysqli_fetch_array($result))
                                                    {
                                                        echo '<option value="'.$row["account_number"].'">'.$row["account_number"].'</option>';
                                                    }
                                                    ?>
                                                </select>
                                            </TD>

                                            <TD>
                                                <label>Deposit Amount</label>
                                                <INPUT class="form-control text-right" type="text" name="loans_deposit_amount[]"/>

                                            </TD>

                                        </TR>
                                    </TABLE>
                                </div>


                            </div>
                            <hr>
                        </section>
                        <div class="row">
                            <div class="col-md-3">
                                <label>Receipt Number</label>
                                <input id="receipt_number" name="receipt_number" value="" class="form-control text-right"/>
                            </div>
                            <div class="col-md-3">
                                <label>Total Amount</label>
                                <input disabled id="total_amount" name="total_amount" value="0.00" class="form-control text-right"/>
                            </div>
                            <div class="col-md-3">
                                <label>Row Count</label>
                                <input type="hidden" id="row_count" name="row_count" class="form-control text-right"/>
                            </div>
                            <div class="col-md-2">
                                <label>Save Deposit</label>
                                <button id="save_deposit" class="btn btn-primary" type="submit">Save Deposit</button>
                            </div>
                        </div>

                    </div>
                </div>
            </form>
}

我对数据库的插入如下,位于同一个php文件中

if (isset($_POST['receipt_number'])) {
    $user_id = $_SESSION['username'];
    $row_count = $_POST['row_count'];
    echo $row_count;
    $receipt_id = $_POST['receipt_number'];
    $savi_account_number = $_POST['savings_account_number'];
    $savi_deposit_amount = $_POST['savings_deposit_amount'];
    $member_id = $_POST['member_id'];
    $create_date = date('Y-m-d H:i:s');

    //check for remaining receipt id

    $check_item_id = "SELECT receipt_id from savings_transactions_table where receipt_id='$receipt_id' LIMIT 1"; //check if item exist
    $resultset = $conn->query($check_item_id);
    if ($resultset->num_rows == 0) {
        for ($i = 0; $i < $_POST['row_count']; $i++) {
            $insert = "INSERT INTO `savings_transactions_table` (`id`, `receipt_id`, `sub_code`, `savings_account`, `user_id`, `amount`, `dr`, `cr`, `actual_balance`, `available_balance`, `created_user`, `created_date`)
VALUES (NULL, '$receipt_id', '1', '" . $_POST['savings_account_number'][$i] . "', '$member_id', '" . $_POST['savings_deposit_amount'][$i] . "', '0', '" . $_POST['savings_deposit_amount'][$i] . "', '0', '0', '$user_id', '$create_date')";
            $res = $conn->query($insert);

        }
        if ($res) {
            echo "<script>";
            echo "alert('Transactions Posted!')";
            echo "</script>";
        } else {
            if ($conn->error) {
                try {
                    throw new Exception("MySQL error $conn->error <br> Query:<br> $res", $conn->errno);
                } catch (Exception $e) {
                    echo "Error No: " . $e->getCode() . " - " . $e->getMessage() . "<br >";
                }
            }
        }
    }
}

最佳答案

在 HTML 末尾添加类似以下内容:

(function($, window, undefined) {
    $('#myform').on('submit', function() {
        event.preventDefault();
        $.post(
            'ajax-insert-data.php',
            $('#myform').serialize()
        );
    });
})();

还将处理 POST 的 PHP 代码放入名为“ajax-insert-data.php”的不同文件中

关于jquery - 使用动态和静态输入php序列化并插入到mysql表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52069015/

相关文章:

javascript - 如何修复 ajax 调用以便隐藏我的 token ?

javascript - 显示从jquery到html div标签的值

javascript - Symfony Controller 返回的变量始终未定义

php - CakePHP 和 HABTM 模型限制错误

mysql - Jdbc 和 MySql 不想一起玩得很好

php - 不工作要求

javascript - 现有电子邮件检查(Django + Javascript/Ajax)

javascript - AJAX jQuery 每 5 秒刷新一次 div

javascript - 仅打开单击的下拉菜单

javascript - 使用 JavaScript/JQuery 获取整个文档的 html