从'FOREACH'生成的表中获取数据

时间:2016-11-29 01:50:17

标签: php jquery mysql ajax foreach

我正在尝试制作一个编辑表格。我使用重新插入方法 这是我要编辑的t_job_detail表(这是虚拟的):

ID    Job ID     Name     Score
A1        B1     Claire      75
A1        B2     Claire      80
A2        B4       Dart      60

我的表单如下:

<form id='f_edit' method='post' action='<?php echo site_url('con_atk/edit_data'); ?>'>
   <div>//header div </div>

   <?php foreach($test as $row){ ?> //$test = data from mysql query when I select ID = A1
   <div>
        <table>
        <tr>
            <td><input type='text' name='arr[0]['job_id']' value='<?php echo $row['job_id']; ?>'</td>
            <td><input type='text' name='arr[1]['name']' value='<?php echo $row['name]; ?>'</td>
            <td><input type='text' name='arr[2]['score']' value='<?php echo $row['score']; ?>'</td>
        </tr>
        </table>
   </div>
   <?php }; ?>

   <div><input type='submit' value='update' /></div>
</form

当我选择ID = A1时,生成了两个表,因为我有两个从数据库返回的结果。但是,当我将此表单发送到我的控制器(site_url('con_atk/edit_data'))时,只发送一个表值。

如何记录生成的表格中的所有数据并将其发送到我的控制器?也许是以数组或json的形式。

这是我的控制者:

//FORM EDIT
public function edit_data()
{
    $details = $this->input->post('arr');
    print_r($details); //only data from first table is printed

   die;

   //delete ID = A1  process
   //insert new data process
}

注意

  • 我正在使用Code Igniter MVC
  • 我对任何兼容php的解决方案(Javascript,jQuery,AJAX)开放

1 个答案:

答案 0 :(得分:0)

尝试更新foreach循环以使用密钥,如下所示:

<?php foreach($test as $key => $value){ ?>
<div>
     <table>
     <tr>
         <td><input type='text' name='arr[$key]['job_id']' value='<?php echo $value['job_id']; ?>'</td>
         <td><input type='text' name='arr[$key]['name']' value='<?php echo $value['name]; ?>'</td>
         <td><input type='text' name='arr[$key]['score']' value='<?php echo $value['score']; ?>'</td>
     </tr>
     </table>
</div>
<?php }; ?>

现在,您的行中的输入都是使用彼此完全相同的名称发布的。它们必须是唯一的,以便在发布表单后能够访问所有这些内容。