2014-02-19 92 views
0

處理複選框,當我有檢查使用MySQLi的MySQL數據庫和輸出所有的「存量」型成形式while語句一些PHP代碼:PHP未定義指數與庫MySQLi

$result = mysqli_query($link,"SELECT name FROM items WHERE type='stock' ORDER BY name"); 
echo '<table style="text-align:center;"><tr><th>Name</th><th>Quantity</th><th>Use</th>'; 

while($item = mysqli_fetch_array($result)){ 

     echo '<tr><form action="chooseProduct" method="POST"><td>' . $item['name'] . '</td><td><input type="number" name="amount[]"></td><td><input type="checkbox" name="stock[]" value="' . $item['name'] . '"></td></tr>'; 

    } 

echo '<tr><td rowspan="3" colspan="3"><input type="submit" value="Select"></td></tr></form></table>'; 

那麼我需要能夠選擇我想要使用的股票並點擊select將我發送到「chooseProduct」頁面,在那裏我應該能夠以數組形式使用數據'amount'和'stock'。但是,使用POST時做檢索chooseProduct頁面上這些值如下:

$stock = $_POST['stock']; 
$amount = $_POST['amount']; 

我得到的錯誤如下:

Notice: Undefined index: stock in C:\xampp\htdocs\production\chooseProduct\index.php on line 59 

Notice: Undefined index: amount in C:\xampp\htdocs\production\chooseProduct\index.php on line 60 

複選框肯定是檢查,因此可能會造成什麼這個錯誤?

+0

var_dump($ _ POST)顯示什麼? –

+0

@JohnConde array(0){} –

回答

2

如果您沒有檢查POST操作是否已經完成,所以會有警告/通知分配它。 嘗試

$stock = isset($_POST['stock']) ? $_POST['stock'] : ''; 
$amount = isset($_POST['amount']) ? $_POST['amount'] : ''; 
+0

雖然這是一個很好的編程習慣,但它並沒有真正解決他們的問題。 –

+0

謝謝先生:)。我已經盡了我的努力去做,仍然是新手:) –

+2

沒關係。讚揚你遵循良好的編程習慣和努力幫助他人。 :) –

2

您的表單標記位於您的循環內部。這會在您的頁面上創建一個無效的開放表單。這幾乎肯定會導致您的表單提交無效數據,或者根本沒有任何結果。在你的循環之外移動開口<form>來解決這個問題。

+0

這絕對有幫助,謝謝。不幸的是,它似乎並沒有解決問題。 –

+0

您的表單是否有關閉''標籤?你確定你的HTML的其餘部分是有效的嗎? –

+0

表單在最後一個回顯中關閉。我已經閱讀了HTML,並且我確信它是有效的,因爲它可以在視覺上輸出我期望的頁面。但是,我沒有使用帶有表單的數組和複選框,所以我不確定是否在這裏使用它。 –