我有一个包含数据库表数据的页面。在每一行的末尾,都有一个Update按钮,允许用户更新该特定行。我试图将Id作为只读输入,但每当我点击任何行上的提交时,返回$ this-> input-> post()的值始终是最后一行Id。我希望它返回我点击提交的ID。
Id名称行动
echo form_open('control/edit');
foreach($rs as $db)
{
$row = array(form_input('id', $db['id']), $db['name'], form_submit('update', 'Update'));
$this->table->add_row($row);
}
echo $this->table->generate();
在控制/编辑控制器中,
$this->input->post('id') // always returns the id of the last row.
任何人都知道我该怎么办?谢谢。
答案 0 :(得分:1)
听起来它是作为引用调用传递而不是实际设置值,或者更简单地说,最后一行的输入名称“id”是html表单中的最后一次出现,这意味着它将是只有一个要发帖。
例如:
<input name="id" value="a" />
<input name="id" value="b" />
<input name="id" value="c" />
<input name="id" value="d" />
如果您点击提交,$ this-&gt; input-&gt; post('id')='d';
尝试将您的foreach改为:
... form_input("id[{$db['id']}]", $db['id'] ...
您的$ this-&gt; input-&gt; post('id')将成为一个数组,您可以使用点击的ID获取键/值。
答案 1 :(得分:1)
我建议将点击监听器附加到更新按钮并添加字段。
字段:
桌面的javascript onclick将是
onclick="document.getElementsByName('selectedRowId')[0].value = this.getElementsByTagName('input')[0].value"