如何以codeigniter形式传递行ID?我有这个代码
if(isset($records)) : foreach($records as $row) : ?>
<?php echo form_open('site/update/'); ?>
<td><?php echo form_input('solution_time', $row->solution_time); ?></td>
<td><textarea><?php echo $row->note; ?></textarea></td>
<td><?php echo form_submit('update', 'Update'); ?></td>
<?php form_close(); ?>
</tr>
<?php endforeach; ?>
<?php else : ?>
<h2>No Records</h2>
<?php endif; ?>
但每次每行的ID都会返回1:
localhost/it/index.php/site/update/1
更新:我添加了一个新行(form_hidden)并且它也不起作用
if(isset($records)) : foreach($records as $row) : ?>
<?php echo form_open('site/update/'); ?>
<?php echo form_hidden('id', $row->id); ?>
<td><?php echo form_input('solution_time', $row->solution_time); ?></td>
<td><textarea><?php echo $row->note; ?></textarea></td>
<td><?php echo form_submit('update', 'Update'); ?></td>
<?php form_close(); ?>
</tr>
<?php endforeach; ?>
<?php else : ?>
<h2>No Records</h2>
<?php endif; ?>
答案 0 :(得分:1)
尝试将行ID传递给打开的表单。你正在做的是创建一堆具有相同动作的表单,并且提交仅将第一个表单传递回控制器。在表单操作中传递ID应该可以解决这个问题。
<?php echo form_open('site/update/'.$row->id); ?>
另一个选择是使用jQuery来进行更新。
$(document).on("click", ".updateLink", function() {
$row = $(this).closest('tr');
$.ajax({
type: "GET",
url: "<?=base_url()?>site/update/",
data: $row.find('input').serialize(),
dataType: "json",
success: function(content) {
if (content.status == "success") {
$row.stop().css("background-color", "#99FF66").animate({backgroundColor: "#FFF"}, 1500);
} else {
$("#error").html('<p>'+content.message+'</p>');
}
}
});
return false;
});
在表单中,将提交按钮更改为链接:
<td><?php echo <a href="#" class="updateLink">Update</a></td>
然后在您的控制器中,您只需要回复成功消息。
if(update successfull)
{
print json_encode(array("status"=>"success","message"=>""));
}