【问题标题】:Insert data into the database from checkbox array using Codeigniter使用 Codeigniter 将数据从复选框数组插入数据库
【发布时间】:2017-01-25 15:00:44
【问题描述】:

我想使用 Codeigniter 将数据从 checkbox[array] 插入数据库。 我的情况是用户从复选框表单中检查评估标准,然后我的控制器在复选框被选中时处理它,然后值为 1,如果取消选中则为 0。这是我的观点

ID | Trimester I | Trimester II | Trimester III |
21 | checbox_trimester_i[] | checbox_trimester_ii[] | checbox_trimester_iii[]
42 | checbox_trimester_i[] | checbox_trimester_ii[] | checbox_trimester_iii[]
23 | checbox_trimester_i[] | checbox_trimester_ii[] | checbox_trimester_iii[]

我想插入到表“assesmen”中。这是我在 DB 中的专栏

ID | ID_pk | Trimester_1 | Trimester_2 | Trimester_3 |
1 | 21 | 1 | 0 | 1
2 | 42 | 0 | 1 | 1
3 | 23 | 1 | 0 | 0

注意*:

ID_pk = ID
Trimester_1 => checbox_trimester_i[]
Trimester_2 => checbox_trimester_ii[]
Trimester_3 => checbox_trimester_iii[]

这是我的视图表单:

foreach ($kuisioner as $art) { $no++; ?>
   <tr>
        <td><input type="hidden" name="id[]" value="<?php echo $art->id ?>"></td>
        <td align="center">
            <input type="checkbox" name="checbox_trimester_i[]">
        </td>         
        <td align="center">
            <input type="checkbox" name="checbox_trimester_ii[]">
        </td>         
        <td align="center">
            <input type="checkbox" name="checbox_trimester_iii[]">
        </td>
        </tr>
     <?php }

屏幕截图视图

表单视图

这是我的控制器,但仍然无法使用,请帮助我解决它。谢谢

$posted = $this->input->post();
$as_trim_satu = isset($posted['checbox_trimester_i']) ? $posted['checbox_trimester_i'] : array();
$data = array();
  foreach($posted['id'] as $key => $value)
  {
    $info_user = array(
    'user_id' => $value,
    'trimester_satu' => in_array($posted['id'][$key], $as_trim_satu) ?1:0,
    );
    $data[] = $info_user;
  }
    echo "<pre>";
    print_r($data);
    echo "</pre>";

【问题讨论】:

  • 在代码点火器中,您不应该直接访问 $_POST。它提供了 $this->input 类来处理它们。要获取 post 变量,请使用 $this->input->post("field");
  • 喜欢这个? $trimester_1=$this->input->post('checbox_trimester_i');$check = $trimester_1[$i] ? 1 : 0;
  • 向我们展示您的视图代码以及您如何从 js 或表单传递值
  • 我更新了我的问题@Zeeshan,我为查看添加了
  • 试着把你的表格截图也

标签: php mysql codeigniter checkbox


【解决方案1】:

您可能需要像下面这样调整视图,以便将正确的值输入控制器。如果是这样,您可以使用以下代码。

给出复选框的名称,例如

name="checbox_trimester_i[<?php echo $art->id ?>]"

查看我更新的视图。

<?php foreach ($kuisioner as $art) { $no++; ?>
<tr>
    <td><input type="hidden" name="id[]" value="<?php echo $art->id ?>"> </td>
    <td align="center">
        <input type="checkbox" name="checbox_trimester_i[<?php echo $art->id ?>]" value="1">
    </td>         
    <td align="center">
        <input type="checkbox" name="checbox_trimester_ii[<?php echo $art->id ?>]"  value="1">
    </td>         
    <td align="center">
        <input type="checkbox" name="checbox_trimester_iii[<?php echo $art->id ?>]" value="1">
    </td>
    </tr>
 <?php } ?>

以下是用于访问从页面发布的表单数据的控制器代码

if($this->input->post()){
        $data = array();
        $ids = $this->input->post('id');
        $checbox_trimester_i = $this->input->post('checbox_trimester_i');
        $checbox_trimester_ii = $this->input->post('checbox_trimester_ii');
        $checbox_trimester_iii = $this->input->post('checbox_trimester_iii');   
        if($ids ){
            foreach ($ids as $key => $value){
                $info_user = array(
                'user_id' => $value,
                'Trimester_1' => !empty($checbox_trimester_i[$value]) ? 1: 0,
                'Trimester_2' => !empty($checbox_trimester_ii[$value]) ? 1: 0,
                'Trimester_3' => !empty($checbox_trimester_iii[$value]) ? 1: 0,
                );
                $data[] = $info_user;

            }   
        }

        echo "<pre>";
        print_r($data);
        echo "</pre>";
    }

请注意我创建的变量$info_user。您可以在更新之前使用正确的数据库列名。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-23
    • 2012-04-23
    • 1970-01-01
    • 2021-10-20
    • 1970-01-01
    • 2015-08-30
    • 1970-01-01
    相关资源
    最近更新 更多