簡體   English   中英

注意:未定義索引:嘗試使用空數組提交表單時

[英]Notice: Undefined index: when trying to submit form with a null array

美好的一天,有人願意在我每次提交表格時解釋此通知。 這是我的代碼如下:

<form action="" method="post" name="f"> 
<TABLE id="dataTable" border="1">
<thead>
        <tr>
            <td></td>
            <td>Product Name</td>
            <td>Model</td>
            <td>Description</td>
        </tr>
    </thead>
<tbody>

</tbody>
</TABLE>
<br>

<input type="text" name="ProductNme" id="item" >
<input type="text" name="ProductNme" id="price" >
<input type="text" name="ProductNme" id="qty" >

<input type="submit" name="submit" value="Submit">

<INPUT type="button" value="Add Row" onclick="addRow('dataTable')" />

<INPUT type="button" value="Delete Row" onclick="deleteRow('dataTable')" />

<?php

if($_POST['submit']) {


    $dbC = new imsFunction();

    if ($_POST['item'] == null) {
        echo 'No Data';
    } else {
        foreach ($_POST['item'] as $key => $value) { 

            $item = $_POST["item"][$key];
            $price = $_POST["price"][$key];
            $qty = $_POST["qty"][$key];

                $sql = $dbC->qryExec('Insert Into tbl_test (item,price,quant) Values (?, ?, ?)', [$item, $price, $qty]);
                //$sql = mysql_query("insert into your_table_name values ('','$item', '$price', '$qty')");  
            }  
        } 
    }
}   

?>

這是將數據添加到表行的javascript代碼。

function addRow(tableID) {

    var enteredItem = $("#item").val();
    var enteredPrice = $("#price").val();
    var enteredQty= $("#qty").val();

    if (!enteredItem) {
        alert("Please entere item name!");
    } else {
        var table = document.getElementById(tableID);

        var rowCount = table.rows.length;
        var row = table.insertRow(rowCount);

        var cell1 = row.insertCell(0);
        var element1 = document.createElement("input");
        element1.type = "checkbox";
        element1.name="chkbox[]";
        cell1.appendChild(element1);

        var cell2 = row.insertCell(1);
        cell2.innerHTML = "<input type='text' name='item[]' value='"+enteredItem+"' readonly />";

        var cell3 = row.insertCell(2);
        cell3.innerHTML = "<input type='text'  name='price[]' value='"+enteredPrice+"' readonly />";

        var cell4 = row.insertCell(3);
        cell4.innerHTML = "<input type='text'  name='qty[]' value='"+enteredQty+"' readonly />";

        document.getElementById('item').value='';
    }
}

輸入的名稱類似於“ item []”。 我想要做的是捕獲錯誤,如果用戶沒有先添加數據就提交按鈕。 但是發生的是,它在foreach循環中發出了Undefined index:item的通知。

測試傳入數據時,請始終假設最壞的情況。 在這種情況下,如果未首先設置測試$_POST['item']==null可能會失敗。

比較安全的方法是:

if(isset($_POST['item']) && is_array($_POST['item'])) {

}

測試的第二部分以防萬一。

順便說一句,如果您確實測試了一個null值,則應使用===將其與其他虛假值區分開。

輸入字段名稱有一些錯誤

<input type="text" name="ProductNme" id="item" >
<input type="text" name="ProductNme" id="price" >
<input type="text" name="ProductNme" id="qty" >

它們都被命名為: ProductNme ,這就是為什么這些行不起作用的原因

$item = $_POST["item"][$key];
        $price = $_POST["price"][$key];
        $qty = $_POST["qty"][$key];

這些索引( itempriceqty )在發送到服務器的$ _POST數組中不存在。 因此, 未定義的索引消息。 祝好運

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM