0

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

1 回答 1

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"=>""));
}
于 2012-11-09T13:11:58.547 回答