【问题标题】:Inserting multiple checkbox values with a same text field value (codeigniter)插入具有相同文本字段值的多个复选框值(codeigniter)
【发布时间】:2018-03-07 10:48:33
【问题描述】:

我正在尝试将值放入这样的 MySQL 表中:

|---sbjct_name---|---级别---|

|---------物理---------|----1级-----|

|---------物理---------|----2级-----|

|---------物理---------|----3级-----|

|--------- 微积分 ---------|----Level 1-----|

|---------微积分---------|----2级-----|

(我不知道如何制作桌子,但我想你明白了)

假设我要将“Math”放入 sbjct_name 列,同时将“Level 1”、“Level 2”、“Level 3”值放入 level 列。

基本思路来自this pict (selecting value for a same input text value)

而不是为每个级别多次插入“数学”, 我正在尝试使用复选框标记一次性提交。类似于this pict (with checkbox)

我不知道如何实现这一点(或者如果在 CI 中可能的话)。

这是来自我的控制器的一些代码,

public function add_subject()
{
    $data = array();

    if ($this->input->post('savebttn'))
    {
        $this->form_validation->set_rules('sbjct_name', 'Subject Name', 'trim|required|xss_clean');
        $this->form_validation->set_rules('level', 'Level', '|required|is_natural');
        $this->form_validation->set_error_delimiters('<span class="fielderror">','</span>');

        if ($this->form_validation->run() == FALSE)
        {
            $data['reset'] = FALSE;
        }
        else
        {
           //I don't know what to do here
           //I don't know what to do here
           //I don't know what to do here
           //I don't know what to do here
        }
    }
    $data['level'] = $this->admin_model->get_checkbox_option('level', 'lvl_id', 'lvl_name');
    $data['page'] = 'createsubject';
    $this->load->view('admin/main', $data);
}

这是模型中的复选框视图功能,

public function get_checkbox_option($table, $id, $name, $selected=0)
{
    $query = $this->db->get($table);
    $select= '';
    if ($query->num_rows() > 0)
    {
        foreach ($query->result_array() as $row)
        {
            $selected_option = ($selected == $row[$id]) ? 'selected = "selected" ':' ';
            $select .='<input type="checkbox" name="level" value="'.$row[$id].'" '.$selected_option.'>'.$row[$name].'<br>';
        }
    }
    return $select;
}

这是视图上的表单,

    <form action="" method="post" id="createcategoryform">
        <table>
            <tbody>
                <tr>
                    <td><div class="label">Subject Name</div></td>
                    <td><div class="input">
                        <input type="text" name="sbjct_name" size="39" class="ui-corner-all input-text validate[required]">
                        <?=form_error('sbjct_name');?>
                    </div></td>
                </tr>
                <tr>
                    <td><div class="label">Level</div></td>
                    <td><div class="input-text ui-corner-all validate[required]">
                        <?=(isset($level)) ? $level: '';?>
                    </div><?=form_error('level');?></td>
                </tr>
                <tr>
                    <td>&nbsp;</td>
                    <td><input type="submit" value="Save" name="savebttn" class="input-button ui-corner-all ui-state-default"></td>
                </tr>
            </tbody>
        </table>
    </form>

如果您能提供任何线索,我将不胜感激。 :D

【问题讨论】:

  • 你能解释一下你真正想要什么吗?很不清楚,我好像看不懂。
  • @Dray 我已经编辑了我的问题。我希望它比以前更清楚。顺便感谢您的回复。

标签: php codeigniter checkbox


【解决方案1】:

第一

将您的复选框设为数组,使其看起来像这样

$select .='<input type="checkbox" name="level[]" value="'.$row[$id].'" '.$selected_option.'>'.$row[$name].'<br>';

注意名称。你的name="level" 和我的name="level[]" , 那么你可以将所有级别作为一个变量来获取

像这样制作你的控制器

if ($this->form_validation->run() == FALSE)
        {
            $data['reset'] = FALSE;
        }
        else
        {
          // make array container for input batch
          $insertData = array();
          if(!empty($this->input->post('level'))) {
              foreach($this->input->post('level') as $level) {
                    $tempArray = array(
                      'sbjct_name' => $this->input->post('sbjct_name'),
                      'level' => $level
                    );

                    array_push($insertData, $tempArray);
              }

              // it's better to put this in model
              // but for example purpose I put it there
              $this->db->insert_batch('table', $insertData);

              //do what you want to do here
          }
        }

希望你明白@nasamikhail

【讨论】:

  • 我知道你关于插入数组的想法。我尝试过这个。它没有产生任何错误,但它还没有工作。我想我需要在我的代码中进行视图调整。这非常有用,谢谢!
  • 我知道为什么它第一次不起作用。我鲁莽地复制了你的代码。有这个小东西@Khaer Ansori。您忘记使用关键字“array”来定义 $tempArray 变量。除此之外,您的代码运行良好!代码应该是这样的: $tempArray = array(.....);我已经编辑了您的答案,以便人们可以看到正确的答案并从中学习。再次感谢,伙计!
猜你喜欢
  • 2014-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-06
  • 2015-02-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多