CodeIgniter:在视图中的表单中创建复选框,以便将多个选择作为数组提交

问题描述 投票:0回答:2

我正在按照 nettut+ 教程进行分页并将 POST 输入作为查询字符串存储在数据库中。到目前为止,一切正常,直到假设我得到一个数组作为 POST 输入,我无法循环它并获取所有数组值并存储到 query_array 中(即,在数组中存储数组)。

以下片段:

$query_array = array(
'gender' => $this->input->post('gender'),
'minage' => $this->input->post('minage'),
'maxage' => $this->input->post('maxage'),
'Citizenship' => $this->input->post('citizenship'), // checkboxes with name citizenship[]
);

这仅返回公民身份中最后存储的数组值。

输出数组:

Array ( [gender] => 1 [minage] => 18 [maxage] => 24 [Citizenship] => 2 ) 

使查询字符串为:

&gender=1&minage=18&maxage=24&Citizenship=2

但是,我的要求是获取“公民身份”数组的所有值而不是最后存储的值。

制作查询字符串所需的输出:

Array ( [gender] => 1 [minage] => 18 [maxage] => 24 [Citizenship] => 2 [Citizenship] => 4 [Citizenship] => 6 ) 

查询字符串:

&gender=1&minage=18&maxage=24&Citizenship[]=2&Citizenship[]=4&Citizenship[]=6
php html codeigniter model-view-controller checkbox
2个回答
0
投票

代码点火器看起来并不支持未命名的多维数组作为输入,而无需进行任何黑客攻击。

如果您可以访问原始 $_POST 数据,请尝试替换

$this->input->post('citizenship')

array_map('intval',$_POST['citizenship'])

或者将密钥添加到您的帖子数据中:

&gender=1&minage=18&maxage=24&Citizenship[0]=2&Citizenship[1]=4&Citizenship[2]=6

0
投票

我自己修好了。我只是循环遍历 POST 数组并获取单独的数组键和对值。

foreach($_POST['Citizenship'] as $k => $v) {
    $Citizenship[$v] = $v;
}

希望这可以帮助面临类似问题的人。

© www.soinside.com 2019 - 2024. All rights reserved.