0

私はCodeIgniterを初めて使用し、配列を操作しています。各チェックボックスの値をデータベースの同じ行に入れようとしています。配列をループする必要があることはわかっていますが、データベースの対応する見出しの下に値を書き込むように配列に指示する方法がわかりません。これは私が試したことですが、すべてのオプションについてデータベースに0を書き込みます。時間を割いて私の質問に答えてくれた人に感謝します。

//見る

<input type="text" name="name" /> Name
<input type="checkbox" value="1" name="options[]" /> Option 1
<input type="checkbox" value="2" name="options[]" /> Option 2
<input type="checkbox" value="3" name="options[]" /> Option 3
<input type="checkbox" value="4" name="options[]" /> Option 4

//コントローラ

//require at least 1 checkbox
$this->form_validation->set_rules('name', 'Name', 'required');
$this->form_validation->set_rules('options[]', 'Options', 'required');

//not sure how to do this part, 
//some how get values to the corresponding "option"
$name = $this->input->post('name');
$option1 = $this->input->post('options[0]');
$option2 = $this->input->post('options[1]');
$option3 = $this->input->post('options[2]');
$option4 = $this->input->post('options[3]');

//insert to database
$this->load->model('add', 'add_model');
$this->add_model->create_person($name, $option1, $option2, $option3, $option4);

//データベース

| id | 名前| オプション1| オプション2| オプション3| オプション4|

4

1 に答える 1

1

私は個人的に異なる名前のチェックボックスを持ち、フォームを送信する前にビューでjQueryによって検証しますが、これが正しい方向を示すコードです。

フォームオプションを送信すると、配列にはフォームで選択した数の要素が含まれます。チェックボックスが選択されていない場合、配列は空になるため、コードは次のようになります。

$option3 = $this->input->post('options[2]');

空の配列の3番目の要素を取得しようとします。

既存の要素をループして、それらの値を変数に割り当てる必要があります。次のコードを使用してこれを行うことができます。

$myArr = array(1 => 0, 2 => 0, 3 => 0, 4 => 0);   //set all the variables to 0
foreach($_POST['options'] as $checked)          //loop throught the selected options
{
    $myArr[$checked] = $checked;                     //assign to corresponding array element                            
}

$this->add_model->create_person($name, $myArr[1], $myArr[2], $myArr[3], $myArr[4]);

上記のコードは特にエレガントではありませんが、お役に立てば幸いです。

于 2012-08-31T16:09:20.090 に答える