2015-03-31 57 views
0

所以我在看這個網站上的其他文章,並且遇到了下面的代碼(我的代碼的編輯),除了我提交時完美的工作,我得到一個錯誤代碼:注意:未定義的索引:每個結果的第17行中的/customers/0/2/e/richardbrown.name/httpd.www/debt/payment_process.php中的id。Forms&Posting - Multiple Data

<form method="post" action="payment_process.php"> 
<table border="0">'; 
$stmt = $db->query("SELECT * FROM debt_accounts LEFT JOIN debt_companies ON accounts_company=companies_id WHERE accounts_amount > 0 ORDER BY accounts_company ASC"); 

while($row = $stmt->fetch(PDO::FETCH_ASSOC)){ 
echo'<tr> 
<td width="200" align="left"><input type="text" name="payment[][id]" value="'.$row['accounts_id'].'" /></td> 
<td width="100" align="right"><input type="text" name="payment[][amount]" value="25.00" /></td> 
</tr>';     

} 

echo'</table><br /> <br /><input type="submit" /></form> 


if (isset($_POST['payment'])) 
{ 
    echo '<table>'; 
    foreach ($_POST['payment'] as $diam) 
    { 
     echo '<tr>'; 
     echo ' <td>', $diam['id'], '</td>'; 
     echo ' <td>', $diam['amount'], '</td>'; 
     echo '</tr>'; 
    } 
    echo '</table>'; 
} 
+0

過程腳本做什麼? – 2015-03-31 19:56:19

+0

所有的名稱字段都必須是唯一的或者是一個數組,所以名稱字段需要爲payment_id []等。然後可以在發送時通過 – Adsy2010 2015-03-31 19:59:02

+0

來查看[鏈接](http:// www。 richardbrown.name/debt/payment.php)這是數據庫的列表,所以一旦我點擊提交,我希望能夠處理11個結果,以便能夠輸入數據...我已經使用了一個foreach ob paymen_id但似乎沒有工作? – Richard 2015-03-31 20:00:33

回答

0

您的解決方案是: 名= 「payment_id []」 你的表格

和服務器端(payment_process.php) 您使用foreach循環的$ _ POST [ 'payment_id'] [ ]。

+0

沒問題,所以我添加了payment_id [],但現在當你處理你得到一個列表,但當我希望它是基於我輸入的內容時,$ _POST ['payment_amount']當前在表單頁上的數量是11? – Richard 2015-03-31 20:37:10

+1

只是因爲你必須在你的表單中用name =「payment_amount []」來做同樣的事情。每個都必須是您的表單中的數組。然後,您可以在您的payment_process.php中使用「foreach($ _ POST ['payment_amount']作爲$ value)」 – DDA 2015-03-31 21:23:53

2

更改這條線從您的表單元素:

name="payment_amount" 

是一個數組:

name="payment_amount[]" 

然後修改foreach爲閱讀:

foreach ($_POST['payment_amount'] as $value) { 
    echo $value . "<br>"; 
} 
  • 你正在使用錯誤的POST數組=>name="payment_id[]"

要添加它們加起來,應該要做到這一點,使用:

foreach ($_POST['payment_amount'] as $value) { 

    echo $value . "<br>"; 

    $total += $value; 

} 

    echo $total; 

$total = array_sum($_POST['payment_amount']);