无法将具有多行的 HTML 表插入数据库并显示错误 注意:未初始化的字符串偏移量:0


unable insert html table with multiple row to database with error Notice: Uninitialized string offset: 0

请告诉我我错过了什么。当我按下提交按钮时,错误小狗如下。

注意:未初始化的字符串偏移量:0 in C:''xampp''htdocs''spa315''order.php 在第 106 行

注意:未初始化的字符串偏移量:0 in C:''xampp''htdocs''spa315''order.php 在第 107 行

注意:未初始化的字符串偏移量:0 in C:''xampp''htdocs''spa315''order.php 在第 108 行

注意:未初始化的字符串偏移量:0 in C:''xampp''htdocs''spa315''order.php 在第 109 行

错误来自

$spa_order_desc = $spa_order_desc1[$i];
$spa_order_qty = $spa_order_qty1[$i];
$spa_order_unit_prc = $spa_order_unit_prc1[$i];
$spa_order_amt = $spa_order_amt1[$i];

请参考下面的代码。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
        <!--Add & delete rows from table dynamically-->
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
        <script>
            $(function(){
                $('#addRow').click(function(){
                    var html = $('#row_template').html();
                    $('#dataTable').append(html);
                });
                $('#deleteRow').click(function(){
                    $('#dataTable .mychkbox:checked').parents('tr').remove();
                    calc_ttl();
                });
                $('#dataTable').on('change','.select-desc',function(){
                    var cur_val = $(this).val();
                    $(this).parents('tr').find('input[name="spa_order_unit_prc"]').val(cur_val);
                });
                $('#dataTable').on('keyup','input[name="spa_order_qty"]', function(){
                    var qty = +$(this).val();
                    var unit = +$(this).parents('tr').find('input[name="spa_order_unit_prc"]').val();
                    $(this).parents('tr').find('input[name="spa_order_amt"]').val(qty*unit);
                    calc_ttl();
                });
            });
        </script>
<body>
    <form action="" method="post" name="form_order">
    <p> 
        <input type="button" value="Add Treatment" id="addRow" /> 
        <input type="button" value="Remove Treatment" id="deleteRow"  /> 
    </p>
    <table id="dataTable" class="form" border="1">
        <tr>
            <td></td>
            <td>No.</td>
            <td>Description</td>
            <td>Qty</td>
            <td>Unit Price</td>
            <td>Amount</td>
        </tr>
    </table>
    <!-- table row template here -->
    <table id="row_template" style="display:none">
        <tr>
            <td><input type="checkbox" name="chk[]" class="mychkbox" /></td>
            <td>1</td>
            <td>
                <select name="spa_order_desc" id="spa_order_desc" class="select-desc">
                    <option value="">Select Treatment</option>
                    <?php
                            while($dd=mysql_fetch_array($get_tm)) {
                ?>
                            <option value="<?php echo $dd['tm_unit_prc']?>"><?php echo $dd['tm_abb'] ?> - <?php echo $dd['tm_desc'] ?></option>
                <?php
                        }
                    ?>
                    </select>
            </td>
            <td>
                <input type="text" name="spa_order_qty" id="spa_order_qty" size="5">
            </td>
            <td>
                <input type="text" name="spa_order_unit_prc" id="spa_order_unit_prc" readonly size="10">
            </td>
            <td>
                <input type="text" name="spa_order_amt" id="spa_order_amt" readonly size="10">
            </td>
        </tr>
    </table>
    <input type="submit" name="Submit" value="Create">
    </form>
</body>
</html>
<?php
    //including the database connection file
    include_once("config_db.php");
    //getting data from the fields
    if(isset($_POST['Submit']))
    {
        $spa_order_desc1 = $_POST['spa_order_desc'];
        $spa_order_qty1 = $_POST['spa_order_qty'];
        $spa_order_unit_prc1 = $_POST['spa_order_unit_prc'];
        $spa_order_amt1 = $_POST['spa_order_amt'];
        for($i=0; $i < count($spa_order_desc1); $i++) {
            $spa_order_desc = $spa_order_desc1[$i];
            $spa_order_qty = $spa_order_qty1[$i];
            $spa_order_unit_prc = $spa_order_unit_prc1[$i];
            $spa_order_amt = $spa_order_amt1[$i];
        }
        //insert data to database   
        $insert_spa_o_dtl=mysql_query("INSERT INTO tb_spa_order_details(spa_order_desc,spa_order_qty,spa_order_unit_prc,spa_order_amt) VALUES('$spa_order_desc','$spa_order_qty','$spa_order_unit_prc','$spa_order_amt')");
    }
?>

发生此错误是因为您将普通变量视为数组。尝试重命名表单元素,如下所示:

"spa_order_desc"到"spa_order_desc[]"

"spa_order_qty"到"spa_order_qty[]"

"spa_order_unit_prc"到"spa_order_unit_prc[]"

"spa_order_amt"到"spa_order_amt[]"

此外,将插入查询放在循环中,以便为上一步中的每个输入插入。

for($i=0; $i < count($spa_order_desc1); $i++) {
    $spa_order_desc = $spa_order_desc1[$i];
    $spa_order_qty = $spa_order_qty1[$i];
    $spa_order_unit_prc = $spa_order_unit_prc1[$i];
    $spa_order_amt = $spa_order_amt1[$i];
    $insert_spa_o_dtl=mysql_query("INSERT INTO tb_spa_order_details(spa_order_desc,spa_order_qty,spa_order_unit_prc,spa_order_amt) VALUES('$spa_order_desc','$spa_order_qty','$spa_order_unit_prc','$spa_order_amt')");
}