【问题标题】:how to join the input from every row and save to database如何加入每一行的输入并保存到数据库
【发布时间】:2012-08-16 02:33:39
【问题描述】:

我有这个问题

这是我 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+     |

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

【问题讨论】:

  • 每一行是什么意思?您尝试了什么查询。 php implode() 可以帮助你
  • @raheelshan 对不起,我的意思是基于 id,我只是编辑我的问题
  • 您正在循环并向具有相同值的多个复选框提供 menu_id。改为这样做

标签: php codeigniter checkbox codeigniter-2


【解决方案1】:

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

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

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

【讨论】:

    【解决方案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]);
    

    【讨论】:

      猜你喜欢
      • 2016-03-23
      • 2021-09-15
      • 2014-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-21
      • 1970-01-01
      相关资源
      最近更新 更多