我有一个带有PHP循环和隐藏字段的HTML表格,当用户从列表中选择一个项目并按下提交按钮时,我希望将该项目数据插入到数据库中。问题是当按下按钮时,它总是从列表的最后一行插入相同的数据。
<form id="paymentForm" role="form" action="<?php echo base_url('payment/save'); ?>" method="post">
<?php foreach ($result as $row): ?>
<td><input type="hidden" name="sum" value="<?php echo $row['sum']; ?>" /></td>
<td><input type="hidden" name="total" value="<?php echo $row['total']; ?>" /></td>
<td><a href="#" onclick="document.forms['paymentForm'].submit();">Save</a></td>
<?php endforeach; ?>
</form>
我也使用标准代码进行插入: $ query =“INSERT INTO info(sum,total)VALUES($ sum,$ total)”;
答案 0 :(得分:0)
当您按下“保存”按钮时,您将完整地提交表单。您选择的信息没有区别。只有sum
和value
的最后一个将作为标头传递给服务器。意思是,表格的最后一行是唯一一个将被保存的行。
我在JSFiddle中编写了一个示例表单,其中显示了在按下保存按钮时如何让很多行提交单个值。
http://jsfiddle.net/w6nug118/3/
要总结代码,我的表单的工作方式是只使用 sum
和total
的一个实例。该按钮会在提交表单之前将这些值更改为data-
属性。
答案 1 :(得分:0)
看起来您需要使用多个表单标签并告诉按钮提交(此)表单...或者您可以使用Ajax仅发布单击按钮上方的两个输入。这些方面的东西:
<?php $counter = 1; ?>
<?php foreach ($result as $row): ?>
<td>
<form id="paymentForm<?=$counter;?>" role="form" action="<?php echo base_url('payment/save'); ?>" method="post">
<input type="hidden" name="sum" value="<?php echo $row['sum']; ?>" />
<input type="hidden" name="total" value="<?php echo $row['total']; ?>" />
<a href="#" onclick="document.forms['paymentForm<?=$counter;?>'].submit();">Save</a>
</form>
</td>
<?php
$counter++;
endforeach;
?>