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

发布于 2024-12-21 21:48:41 字数 1201 浏览 3 评论 0原文

我正在关注 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

I am following nettut+ tutorial for pagination and to store POST inputs as querystrings in db. So far, everything works fine until, suppose if I get an array as POST input, I am unable to loop through it and get all the array values and to store into query_array (i.e., store array within array).

The snippets below:

$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[]
);

This returns only last stored array value in Citizenship.

The output array:

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

makes the query string as:

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

But, my requirement is to get all the values of 'Citizenship' array instead of last stored value.

The output required to make query string:

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

The query string :

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

挽清梦 2024-12-28 21:48:41

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

如果您可以访问原始 $_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

Doesn't look like code ignighter supports un-named multidimensional arrays as input without a bit of hacking.

If you can access raw $_POST data try replacing

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

with

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

Alternativly add keys to your post data:

&gender=1&minage=18&maxage=24&Citizenship[0]=2&Citizenship[1]=4&Citizenship[2]=6
和影子一齐双人舞 2024-12-28 21:48:41

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

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

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

I fixed it myself. I just looped through the POST array and got the individual array key & pair values.

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

Hope this helps someone who face similar problem.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文