从复选框传递数组并将多行插入数据库CodeIgniter

时间:2018-09-23 01:34:57

标签: php arrays codeigniter checkbox

这是我的观点:

<?php foreach ($list_peserta as $show): ?>
                <label>
                <input type="checkbox" name="undangan[]" value="<?php echo $show->email ?>" />
                <?php echo $show->nama ?></label>
              <?php endforeach; ?>
            </div>
          </div>
          <div class="form-actions">
            <input type="submit" value="Kirim" class="btn btn-info">
          </div>
          <?php echo form_close(); ?>

我的控制器:

$data   =   array();
        $count  =   count($this->input->get_post['undangan']);
        for ($i = 0; $i <= $count ; $i++) {
            $data[] =   array(  
                                'id_acara'      =>  $this->input->post['id'][$i],
                                'email_peserta' =>  $this->input->post['undangan'][$i],
                                'status'        =>  ['Diundang'][$i]
                            );

            $this->db->insert_batch('kehadiran', $data);

我收到此错误: enter image description here

请帮助!

2 个答案:

答案 0 :(得分:0)

我认为您在此行中有错别字。不要使用方括号,否则它看起来像是数组引用。

$count  =   count($this->input->get_post['undangan']);

我认为应该是括号...

$count  =   count($this->input->get_post('undangan'));

答案 1 :(得分:0)

因此您得到一个错误,该错误实质上表明$this->input->get_post['undangan']不是数组。不过,您的首要任务应该是检查一下var_dump为您带来了什么价值。

然后您可能会注意到您的get post语法不正确:

https://www.codeigniter.com/user_guide/libraries/input.html#CI_Input::get_post

$this->input->get_post(‘some_data’, TRUE);

遵循该方案之后,您就不会再遇到问题了。如果仍然存在,则需要验证是否正在发送变量。当我不知道变量是get还是post时,我不知道这种情况,因此我将使其成为其中之一而不是使用get_post。 / p>

通常,验证输入内容也是个好主意。

$var = $this->input->post('somevar');

if (is_null($var)) {
    show_error('missing params');
} else {
    // your logic
}