2012-06-05 55 views
0

我有一个包含来自数据库表的数据的页面。在每一行的末尾,都有一个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. 

任何人都知道我该怎么处理这件事?谢谢。

回答

1

听起来好像它是通过引用来传递的,而不是实际设置值,或者更简单地说,最后一行的输入名称“id”是html表单中的最后一次出现,这意味着它将成为唯一一个获得post'd。

例:

<input name="id" value="a" /> 
<input name="id" value="b" /> 
<input name="id" value="c" /> 
<input name="id" value="d" /> 

如果你点击提交,$这个 - >输入 - >后( '身份证')= 'd';

试着改变你的foreach的东西,如:

... form_input("id[{$db['id']}]", $db['id'] ... 

你$这个 - >输入 - >后(“ID”),那么将是一个数组,你可以得到什么ID键/值被点击。

1

我会建议附加一个点击监听器到您的更新按钮并添加一个字段。

场:

和JavaScript的onclick为tablerows将

onclick="document.getElementsByName('selectedRowId')[0].value = this.getElementsByTagName('input')[0].value" 
相关问题