ボタンのクリックで動的に生成される複数選択ボックスを含む単純なフォームがあります。
フォームのデモはこちらから入手できます。
複数選択ボックスであるため、ユーザーは選択ボックスから任意の数の値を選択でき、データベースに保存する必要があります。というわけで、セレクトボックスを配列として宣言してみました。
<select name="select2[]" size="3" multiple="multiple">
<option value="11">eleven</option>
<option value="12">twelve</option>
<option value="13">thirette</option>
<option value="14">fourteen</option>
<option value="15">fifteen</option>
<option value="16">sixteen</option>
<option value="17">seventeen</option>
<option value="18">eighteen</option>
<option value="19">nineteen</option>
<option value="20">twenty</option>
</select>
ただし、前に述べたように、複数選択ボックスはユーザーの選択に従って複数回生成されるため、入力されたすべてのデータを保存する必要があります。そこで、jquery を使用して選択ボックスの名前を変更します。
選択ボックスの名前は、select2[]1、select2[]2、select2[]3 などになりますが (これは無効です。配列ではありません)、select21[]、select22[]、select23[ のようにする必要があります。 ] など、配列を宣言する有効な方法です。次のようにPHPを使用してサーバー側で配列を取得できません
if ($total_count>0)
{ //echo $total_count;
for($i=0;$i<=$total_count;$i++)
{
// generated as select2[]1,select2[]2,select2[]3 ,... which is not valid.
// thus invalid argument to foreach
if($this->input->post('select2[]'.$i)){
$data2=array(
'field1' =>$this->input->post('select2[]'.$i)
);
$this->db->insert('table1',$data2);
}
}
この一体の回避策はありますか?