не знаю насколько еще актуально. Я сегодня столкнулся с той же ситуацией, когда при отправке данных с формы отправляется только данные выведенные циклом foreach последнего инпута.
решается это очень просто. Надо чтобы у каждого выводимого foreach-ем инпута были уникальные атрибуты name.
Сделал это так:
$i=1;
foreach($goods as $item){
if($item['id'] and $item['name']){
?>
<tr>
<td class="admin"><input name='<?php echo "ID".$i;?>' type='text' size='3' value='<?echo $item['id'];?>'/></td>
<td class="admin"><textarea name='<?php echo "text_zadachi".$i;?>' cols="auto" rows="auto"><?echo $item['text_zadachi'];?></textarea></td>
<td class="admin"><?echo $item['status'];?>
<select name='<?php echo "status".$i;?>'>
<option value="1">Выполнено</option>
<option value="0">Не выполнено</option>
</select>
</td>
</tr>
<?
$i++;}
}
?>
т.е. по факту у тебя получиться первое
ID1 text_zadachi1 status1
ID2 text_zadachi2 status2
и т.д.
Запись в БД так же осуществлять циклом
for($i=1;$i<=3;$i++){
$id=$_POST['ID'.$i];
$status=$_POST['status'.$i];
$text_zadachi=$_POST['text_zadachi'.$i];
тут вызов метода записи в БД
}
таким образом он их все поочередно запишет в базу данных.