2

私はこの問題を抱えています

これは私のview.phpからの表示です

id menu  +1 +2 +3

 1   bla_1 [] [] []
 2   bla_2 [] [] []
 3   bla_3 [] [] []

これが私のビューコードです

<?php $i=1; foreach ($test as $row) : ?>
<tr>
<td><input type='hidden' name='id[]' value="<?php echo $row->menu_id ?>" /></td>
<td><input type="text" name="Menu" value="<?php echo $row->menu_nama ?>" disabled <td>
<td><input type="checkbox" name="<?php echo 'menu_id[]'; ?>" value="+1"  /></td>
<td><input type="checkbox" name="<?php echo 'menu_id[]'; ?>" value="+2"  /></td>
<td><input type="checkbox" name="<?php echo 'menu_id[]'; ?>" value="+3"  /></td>
</tr>
<?php $i++; endforeach ; ?>

最初のチェックボックスをオンにすると+1が表示され、2番目のチェックボックスをオンにすると+2が表示されます。

私の目標は、チェックされたすべてのチェックボックスからの入力を結合し、IDに基づいてデータベースに保存することです

これは、チェックボックスの値を結合するためのモデル上の私のコードです

$menu_id= $this->input->post('menu_id');        
        $menu_idc = '';

        $count = count($menu_id);
        $i=0;
        foreach($menu_id as $e){ 
            if($i < $count -1)
            {
                $menu_idc .= $e.'';
                echo $i ;
            }
            else{
                $menu_idc .= $e.'+';
                }
                $i++;
            }
            var_dump($menu_idc);
            die;

このチェックボックスをオンにすると、例から

         id menu   +1   +2  +3

         1   bla_1 [v] [v] [v]
         2   bla_2 []  [v] []
         3   bla_3 []  []  [v]

コードを書くと、+ 1 + 2 + 3 + 2 + 3 +が得られます(行1から+ 1 + 2 + 3、行2から+ 2、行3から+ 3)

私が欲しいのは、すべての行から値を取得し、データベースのテーブルに保存することです

+ 1 + 2 +3+データベースに保存

+2+データベースに保存

+3+データベースに保存

    Database
id   | isi     |
1    | +1+2+3+ |
2    | +2+     |
3    | +3+     |

モデルのコードをループする必要があると思いますが、どのコードを記述しなければならないのかわかりません

4

2 に答える 2

2

必要なのは2次元配列です。最初のディメンションは行用で、2番目のディメンションは列用です。

まず、マークアップを少し変更して、送信された値を2次元にします。

<?php $i=1; foreach ($test as $row) : ?>
  <tr>
    <td><input type='hidden' name="menu[<?php echo $i ?>][id]" value="<?php echo $row->menu_id ?>" /></td>
    <td><input type="text" name="menu[<?php echo $i ?>][menu]" value="<?php echo $row->menu_nama ?>" disabled <td>
    <td><input type="checkbox" name="menu[<?php echo $i ?>][plus][]" value="+1"  /></td>
    <td><input type="checkbox" name="menu[<?php echo $i ?>][plus][]" value="+2"  /></td>
    <td><input type="checkbox" name="menu[<?php echo $i ?>][plus][]" value="+3"  /></td>
  </tr>
<?php $i++; endforeach ; ?>

このコードは正常に機能するはずです。

$menus = $this->input->post('menu');        

foreach ($menus as $menu)
{
  $id = $menu['id'];
  $name = $menu['name'];
  $menu_ids = "";

  if (is_array($menu['plus']))
  {
    $menu_ids = join('', $menu['plus'])).'+';
  }

  // here you can save it now by executing a sql update or whatever
}
于 2012-08-16T05:33:46.797 に答える
0

2次元配列が必要です。最初の次元は行で、2番目の次元はチェックボックスです。フォームには、次のものが必要です。

<td><input type="checkbox" name="<?php echo 'menu_id['.$row->menu_id.'][]'; ?>" value="+1"  /></td>
<td><input type="checkbox" name="<?php echo 'menu_id['.$row->menu_id.'][]'; ?>" value="+2"  /></td>
<td><input type="checkbox" name="<?php echo 'menu_id['.$row->menu_id.'][]'; ?>" value="+3"  /></td>

次に、処理スクリプトで次のことができます。

foreach ($_REQUEST['id'] as $id)
  $isi[$id] = implode('', $menu_id[$id]);
于 2012-08-16T05:33:16.830 に答える