0

複数のドロップダウンボックスに複数の値を保持するこの複数選択された配列に多くの時間を費やしてきましたが、選択した値をテーブルに挿入する必要があります。

ドロップダウン ボックスから選択1,2,3したとします。print_r($this->input->post('category'))` を実行すると、表示されます

Array ( [0] => 1 [1] => 2 [2] => 2 )

ただし、テーブルに挿入すると、3 つの値すべてではなく、最後の値のみが挿入されます。

いくつかの値を選択するビューは次のとおりです。

$category = array(
    'name' => 'category',
    'id' => 'category'
);

<select name="category[]" id="<?php echo $category['id'] ?>" multiple="multiple">
                    <?php
                    foreach($catOpts as $catOpt)
                    {
                        $selected = ($this->input->post('category')==$catOpt->category_name) ? 'selected' : '';
                        echo '<option value="'.$catOpt->category_id.'" '.$selected.'>'.$catOpt->category_name.'</option>';
                    }
                    ?>
                </select>

Controllerでは、値を検証に渡し、検証が有効な場合:

$this->form_validation->set_rules('category[]', 'Category', 'required');

if($this->form_validation->run()) { // validation ok

    if(!is_null($data = $this->db_model->save_listing(          
        $this->form_validation->set_value('category[]')
    ))) { // success

    //some message to acknowledge success created.

    }
}

テーブルに挿入するモデル:

function save_listing($category)
{

    $data = array(
        'category_id' => $category
    );

    $this->db->insert('listing', $data);

    return TRUE;

}

$this->form_validation->set_value('category[]')すべての値 (配列) をコントローラーに渡してモデル関数save_listing()を実行し、すべての値をデータベースの列に保存する方法がわかりません。

私の問題を解決するのを手伝ってください。私は多くのフォーラムを閲覧してきましたが、解決策を得ることができませんでした.

ありがとう。

4

1 に答える 1