【问题标题】:Missing post data in CodeIgniterCodeIgniter 中缺少帖子数据
【发布时间】:2014-06-25 16:52:12
【问题描述】:

我正在 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>    

这是控制器内容: $data = 数组();

    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.');
        }   
    }

【问题讨论】:

    标签: php codeigniter


    【解决方案1】:

    您的输入都共享相同的“名称”属性:

    <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->id 是数据库唯一 ID。

    【讨论】:

    • 你也可以使用数组:name='id[]' or name="id[&lt;?php echo $row-&gt;id; ?&gt;]"
    【解决方案2】:

    您的所有字段都具有相同的名称,因此它们都将被覆盖。您需要将名称更改为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-&gt;input-&gt;post('colOne')$this-&gt;input-&gt;post('colTwo')$this-&gt;input-&gt;post('id') 变成数组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-01
      • 1970-01-01
      • 2015-12-16
      • 1970-01-01
      相关资源
      最近更新 更多