【问题标题】:How can I array results from multiple checkbox post values?如何排列来自多个复选框帖子值的结果?
【发布时间】:2012-03-13 07:23:33
【问题描述】:

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

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

所以,我为它们创建了几个复选框选项。

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

问题是我无法得到这样的结果“苹果、橙子、猕猴桃”。

  • 我们不知道会有多少复选框值。
  • 我想排列像“苹果、橙子、猕猴桃”这样的值

【问题讨论】:

    标签: php html arrays


    【解决方案1】:

    如果您想要数据库中的明文值(未标准化),您可以这样做:

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

    编辑: 由于@Madmartigan 的评论,将原来的implode() 更改为json_encode

    【讨论】:

    • 补充:你期望数据库如何知道如何用逗号分隔的单词分隔数组。 (数组 => 苹果、香蕉、芒果)?首先内爆它会为你解决问题。
    • 其他可能更好的选项包括json_encode()serialize()。如果值中有逗号,它们将与 implode(', ', $fruits) 产生歧义
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-28
      • 1970-01-01
      • 2021-06-08
      • 2015-04-22
      • 1970-01-01
      • 2019-11-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多