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

我的目标是加入每个选中复选框的输入并根据 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

你需要的是一个二维数组。第一个维度用于行,第二个维度用于列。

首先稍微更改您的标记以使提交的值是二维的:

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

您需要一个二维数组,第一维是行,第二维是复选框。在表格中,您应该有:

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