如何排列来自多个复选框发布值的结果


How can I array results from multiple checkbox post values?

我正在建立一个水果店网站。

目前,我想问我的顾客他们喜欢什么样的水果。

因此,我为它们创建了几个复选框选项。

<form action='customer_favorite' method='POST'>
  <input type='checkbox' name='chk[]' value='banana' />
  <input type='checkbox' name='chk[]' value='mango' />
  <input type='checkbox' name='chk[]' value='apple' />
  <input type='checkbox' name='chk[]' value='orange' />
  <input type='checkbox' name='chk[]' value='kiwi' />
<input type='submit' value='submit' />
  • 我不知道他们会选中多少个复选框。

  • 当它发布到我的服务器上时,我想得到这样的结果。

    apple, orange, kiwi
    
  • 第二个顾客会选择其中的四个。

    banana, mango, apple, orange
    

我会像这样把这些数据放进我的数据库。

$data = array(
'fav_fruits' = $this->input->post('chk')
);    
$this->db->insert('customer', $data)

问题是我不能得到这样的结果"苹果,桔子,奇异果"。

  • 我们不知道会有多少复选框值
  • 我想数组值,如"苹果,桔子,奇异果"

如果您想要DB中的明文值(未规范化),可以这样做:

$data = array(
    'fav_fruits' = json_encode($this->input->post('chk'))
);    
$this->db->insert('customer', $data)

编辑:由于@Madmartigan评论

,将原始implode()更改为json_encode

您将在带有复选框名称的数组中获得结果。在这种情况下,您将在$_POST数组中获得chk[0]=>、chk[1]=>等。

之后,如果你必须像香蕉、芒果、苹果、橙子一样储存它,那么,使用","分隔符对该数组进行内爆。。

implode(',' $_POST['chk'])