如何联接每一行的输入并保存到数据库


how to join the input from every row and save to database

>我有这个问题

这是我看到的显示.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+2+3 来自第 1 行,+2 来自第 2 行,+3 来自第 3 行)

我想要的是获取每一行的值并保存到数据库上的表

+1+2+3+ 保存到数据库

+2+ 保存到数据库

+3+ 保存到数据库

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

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

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

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

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

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

<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]);