在codeigniter

时间:2017-03-13 07:17:49

标签: php codeigniter

在我看来,我有一个表单选择多个框,我在其中使用选择下拉列表和this之类的按钮添加项目。

这是选择多个框的代码在向其添加3个项目后的样子。

<label for="nombresFamilia" class="col-md-4 control-label"></label>
<div class="col-md-6">
   <select multiple id="nombresFamilia" name="nombresFamilia[]" class="form-control">
       <option value="CABLES">CABLES</option>
       <option value="PCR">PCR</option>
       <option value="POSTES">POSTES</option>
   </select>
</div>

提交表单信息后,我想将select multiple中的项目保存到数组中。这是我控制器中的代码。

function add()
{   
    .
    .
    .
    $this->form_validation->set_rules('nombresFamilia[]','NombresFamilia');

    if($this->form_validation->run())     
    {   
        .
        .
        .

        $params_familia = $this->input->post('nombresFamilia[]');  
    }
}

然而,当我尝试var_dump数组

<?php
    echo "<pre>";
    var_dump($params_familia);
    echo "</pre>";
?>

我收到消息:“未定义的变量:params_familia”。

我做错了什么?

3 个答案:

答案 0 :(得分:0)

复选框命名为数组,下拉列表未命名为数组。在Drop down或&lt;选择&gt;只返回一个选中的值。如果您想获得所选项目的价值。将您的选择元素命名为

<select multiple id="nombresFamilia" name="nombresFamilia" class="form-control">
   <option value="CABLES">CABLES</option>
   <option value="PCR">PCR</option>
   <option value="POSTES">POSTES</option>
</select>

然后获取值

$params_familia = $this->input->post('nombresFamilia'); 

如果您想要多个选择,则创建复选框而不是下拉列表

<input type="checkbox" name="nombresFamilia[]" value="CABLES">Cables
<input type="checkbox" name="nombresFamilia[]" value="PCR">PCR
<input type="checkbox" name="nombresFamilia[]" value="POSTES">POSTES

然后将控制器中的值作为

$params_familia = $this->input->post('nombresFamilia[]');  

按评论编辑

如果要将所有值发送到帖子,请创建一系列复选框,例如

<input type="checkbox" name="nombresFamilia[]" value="CABLES" selected>Cables
<input type="checkbox" name="nombresFamilia[]" value="PCR" selected>PCR
<input type="checkbox" name="nombresFamilia[]" value="POSTES" selected>POSTES

然后发帖。在您的Controller中通过

获取这些值
$params_familia = $this->input->post('nombresFamilia[]');  

答案 1 :(得分:0)

您可以在视图中使用表单助手的多重选择功能,如下所示:

$options = array(
              'small'  => 'Small Shirt',
              'med'    => 'Medium Shirt',
              'large'   => 'Large Shirt',
              'xlarge' => 'Extra Large Shirt',
            );

echo form_multiselect('shirts[]', $options);

然后在控制器中,像这样使用数组:

print_r($this->input->post('shirts[]'));

希望这有帮助。

答案 2 :(得分:0)

你可以预先选择选择的选项,做这样的事情 查看

<select name="nombresFamilia[]" class="" multiple="multiple">
  <option value="CABLES" selected="selected">CABLES</option>
  <option value="PCR" selected="selected">PCR</option>
  <option value="POSTES" selected="selected">POSTES</option>
</select>


CONTROLLER

$nombresFamilia = $this->input->post('nombresFamilia');
// remove [] in nombresFamilia

echo "<pre>";
var_dump($params_familia);
echo "</pre>";


产生

Array
(
    [0] => CABLES
    [1] => PCR
    [2] => POSTES
)