如何在表单中提交多个表行

时间:2014-01-09 01:40:59

标签: php jquery forms codeigniter ajaxform

我知道这不起作用。但这就是我想要做的。我希望将多个表行数据提交到表单操作,而不是一次提交,而是单击各个行。不知道如何使它工作!

<div class="row">
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12">

    <?php echo form_open_multipart('admin/manageAdv',array('id'=>'manageAdv'))?>
        <table class="table table-striped table-bordered tablesorter advTable">
        <thead>
            <tr>
                <th>S.No</th>
                <th>Title</th>
                <th>File Name</th>
                <th>New Image</th>
                <th>Alternate Text</th>
                <th>Link</th>
                <th>Action</th>
            </tr>
        </thead>
        <tbody>
            <?php foreach ($content as $row):?>
            <tr>
                <td><?php echo $counter = $counter+1;?></td>
                <td><input type="text" class="form-control" value="<?php echo $row['title']?>" name="title"></td>
                <td><?php echo $row['file_name']?></td>
                <td><input type="file" class="form-control" name="upload"></td>
                <td><input type="text" class="form-control" value="<?php echo $row['alt']?>" name="alt"></td>
                <td><input type="text" class="form-control" value="<?php echo $row['link']?>" name="link"></td>
                <input type="hidden" value="<?php echo $row['id']?>" name="id">
                <input type="hidden" value="<?php echo $row['file_path']?>" name="path">
                <td>
                <button type="submit" class="btn btn-default" name="submit" value="update">Update</button>
                <button type="submit" class="btn btn-default" name="submit" value="delete">Delete</button>
                </td>
            </tr>
            <?php endforeach;?>
        </tbody>
        </table>
    <?php form_close()?>
</div>

2 个答案:

答案 0 :(得分:2)

您可以在表单中为每个数据条目添加一个值为id的复选框:

<?php foreach ($content as $row):?>
<tr>
    <td><input type="checkbox" value="<?php echo $row['id']?>" name="id[]"></td>
    <td><?php echo $counter = $counter+1;?></td>
    <td><input type="text" class="form-control" value="<?php echo $row['title']?>" name="title[]"></td>
    <td><?php echo $row['file_name']?></td>
    <td><input type="file" class="form-control" name="upload[]"></td>
    <td><input type="text" class="form-control" value="<?php echo $row['alt']?>" name="alt[]"></td>
    <td><input type="text" class="form-control" value="<?php echo $row['link']?>" name="link[]"></td>
    <input type="hidden" value="<?php echo $row['file_path']?>" name="path">
    <td>
    <button type="submit" class="btn btn-default" name="submit" value="update">Update</button>
    <button type="submit" class="btn btn-default" name="submit" value="delete">Delete</button>
    </td>
</tr>
<?php endforeach;?>

然后,当提交表单时,您可以根据是否选中该复选框来设置一个操作每个数据条目的循环。

这是一个例子:     

for($i=0; $i<count($_POST[alt]); $i++) {
    if(isset($_POST[$i][id])) {
        // do something with $_POST[$i][id]
    }
}

?>

答案 1 :(得分:0)

试试这个:

将行数保留在表单顶部的隐藏字段中。

    <input type="hidden"  value="<?php count($content); ?>" name="row_count"/>

为输入字段使用唯一名称并在每行中提交按钮,例如,使用在每个循环上递增的变量$ i。

    <input type="text" class="form-control" value="<?php echo $row['link']?>" name="link<?php echo $i; ?>"/>

    <button type="submit" class="btn btn-default" name="submit_<?php echo $i; ?>" value="update">Update</button>

在控制器中:

    if(isset($_POST)){
      $row_count=$_POST{'row_count'];

       for($i=0; $i<$row_count; $i++) {
         if(isset($_POST['submit_'.$i])) {

           // do something with $_POST['submit_'.$i]

         }
       }
    }

希望这会对你有所帮助。