如何从每一行加入输入并保存到数据库

时间:2012-08-16 02:33:40

标签: php codeigniter checkbox codeigniter-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+     |

我想我必须在我的模型上循环代码,但我不知道我要编写什么代码

2 个答案:

答案 0 :(得分: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
}

答案 1 :(得分: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]);