缺少CodeIgniter中的帖子数据

时间:2014-06-25 16:52:12

标签: php codeigniter

我在CodeIgniter中提交我的帖子表单,但我只是提交了最后一个表格行。 这里有人知道为什么吗?

HTML看起来像这样:

<form action="<?php echo base_url()."index.php/admin/myform"; ?>" method="post">
    <table>
    <?php foreach($arrays as $row) { // 10 times <tr></tr> ?>
    <tr>
    <td><input type="hidden" name="id" value="<?php echo $row->id; ?>"><input type="text" name="colOne" value="<?php echo $row->ColOne; ?>"> <input type="text" name="colTwo" value="<?php echo $row->ColTwo; ?>"></td>
    </tr>
    <?php } ?>
    <tr>
    <td align="center"><input style="width:100%;" type="submit" name="submit" value="Save"></td>
    </tr>
    </table>    
    </form>    

这是Controller内容:         $ data = array();

    if(isset($_POST['submit'])) {
        $sql = $this->db->query("UPDATE myWebApp
                               SET ColOne = '".$this->input->post('colOne')."',
                               ColTwo = '".$this->input->post('colTwo')."'
                               WHERE id = ".$this->input->post('id'));

        if($sql) {      
            $data = array('Status' => $this->input->post());
            // $this->input->post() contains always only the last array (the 10th) instead of all ten arrays
        } else {
            $data = array('Status' => 'No success. Sorry.');
        }   
    }

2 个答案:

答案 0 :(得分:2)

您的输入全部共享&#34;名称&#34;属性:

<tr>
<td><input type="hidden" name="id"...
</tr>

对于HTML,它是计数输入的名称。如果要避免覆盖,则需要将名称设置为动态。

也许有人这样?

<tr>
<td>
<input type="hidden" name="id_<?php echo $row->id; ?>" value="<?php echo $row->id; ?>">
<input type="text" name="colOne_<?php echo $row->id; ?>" value="<?php echo $row->ColOne; ?>"> 
<input type="text" name="colTwo_<?php echo $row->id; ?>" value="<?php echo $row->ColTwo; ?>">
</td>
</tr>

...假设$ row-&gt; id是数据库唯一ID。

答案 1 :(得分:0)

您的所有字段都具有相同的名称,因此它们都被覆盖。您需要将名称更改为id[](依此类推)。 []使PHP将其视为一个数组。

<td>
    <input type="hidden" name="id[]" value="<?php echo $row->id; ?>">
    <input type="text" name="colOne[]" value="<?php echo $row->ColOne; ?>">
    <input type="text" name="colTwo[]" value="<?php echo $row->ColTwo; ?>">
</td>

这样做会使$this->input->post('colOne')$this->input->post('colTwo')$this->input->post('id')成为数组。