以codeigniter形式传递ID

时间:2012-11-09 11:56:19

标签: php forms codeigniter

如何以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; ?>

1 个答案:

答案 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"=>""));
}