在codeigniter中将多个select(html表单)的选择插入到数据库中

时间:2017-03-04 07:14:40

标签: php codeigniter

我的数据库中有3个不同的表:provider,families和relationproviderfamily。每个提供者都可以拥有许多家庭。

在添加新提供程序的表单中,我有一个多选项,您可以在其中添加属于该提供程序的系列。我使用带有添加按钮的选择下拉列表将项目添加到选择倍数。 /视图/ proveedor /添加/

<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>

我需要获取当前提供者和所有选定族的ID,并将这些值插入表关系提供者家庭中,这只有列。因此,提供者和属于它的每个家庭应该有一行。

`idProveedor` int(11) NOT NULL,
`idFamilia` int(11) NOT NULL

这是我在我的模型中使用的功能&#34; Proveedormodel&#34;插入数据库

function add_uk_proveedor_familia($id, $params){
    foreach($param as $clave){
        $clave = $this->db->query("SELECT id FROM familia WHERE clave = '$param'");
        $this->db->query("INSERT INTO 'relacionproveedorfamilia' ('idProveedor', 'idFamilia') VALUES ('$id', '$clave')");
    }
}

这就是我从控制器调用该功能的地方&#34; Proveedor&#34;

$idProveedor = $this->Proveedormodel->get_proveedor($id);
$params_familia = array(
    'nombresFamilia' => $this->input->post('nombresFamilia')
);
$relacion_proveedor = $this->Proveedormodel->add_uk_proveedor_familia($idProveedor, $params_familia);

我刚刚开始使用codeigniter,而且我已经从这个网站的其他问题中获得了很多帮助,但我还没有能够解决这个问题。非常感谢任何帮助。

您可以查看项目的存储库here

2 个答案:

答案 0 :(得分:1)

试试这些代码。

形式:

<label for="nombresFamilia" class="col-md-4 control-label"></label>
<div class="col-md-6">
    <select multiple="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>

Controller&#34; Proveedor&#34;:

$idProveedor = $this->Proveedormodel->get_proveedor($id);
$params_familia = array(
    'nombresFamilia' => implode(",", $this->input->post('nombresFamilia'))
);
$relacion_proveedor = $this->Proveedormodel->add_uk_proveedor_familia($idProveedor, $params_familia);

在您的模型&#34; Proveedormodel&#34;中,只需插入数据。

答案 1 :(得分:0)

您的nombresFamilia本身返回数组,因此从控制器中移除附加数组

控制器文件

$idProveedor = $this->Proveedormodel->get_proveedor($id);
$params_familia = $this->input->post('nombresFamilia');

$relacion_proveedor = $this->Proveedormodel->add_uk_proveedor_familia($idProveedor, $params_familia);