2012-08-16 50 views
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 + 2 + 3从第1行,+2从第2行,+3从第3行)

我想要的是get是每行的值,并保存到数据库表上È

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

+2+保存到数据库

+3+保存到数据库

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

我想我一定上循环的代码我的模型,但我不知道我要写什么代码

+0

你是什么意思的每一行?你试过什么查询。 PHP的implode()可以帮助你 – 2012-08-16 04:47:32

+0

@raheelshan对不起,我的意思是基于ID,我只是编辑我的问题 – Belajar 2012-08-16 05:11:01

+0

你循环并提供menu_id与多个chechboxes具有相同的值。做这个,而不是<?php echo“menu_id_ $ i []”; ?> – 2012-08-16 05:34:09

回答

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 
} 
+0

其作品感谢:D – Belajar 2012-08-16 07:44:25

0

您需要一个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]); 
+0

感谢您的回复sir – Belajar 2012-08-16 08:05:10

相关问题