0

所以我有一个生成 html 调查的 3rd 方调查工具,对于给定问题中的多选复选框,它会将它们命名为相同的:

<input type="checkbox" value="1" id="V25_1" name="V25">
<input type="checkbox" value="2" id="V25_2" name="V25">

有没有办法可以在 PHP 中检索所有选定的值?$_POST 默认情况下似乎只存储最后选择的值。

4

3 回答 3

1

您的代码应大致如下:

<select multiple="multiple">
  <input type="checkbox" value="1" id="V25_1" name="V25[]">
  <input type="checkbox" value="2" id="V25_2" name="V25[]">
</select>

V25[]意味着您可以从数组中获取值。例如$_GET['V25'][0]

如果需要,您还可以指定索引:

V25[1]或者V25[a]

于 2013-06-28T20:43:38.063 回答
0

你可以在表单提交之前运行这样的东西:

$(":checkbox").each(function(){
   $(this).attr("name",$(this).attr("id"));
});

或者

$(":checkbox").each(function(){
   $(this).attr("name",$(this).attr("name")+"[]");
});  
于 2013-06-28T20:49:41.293 回答
0

当您有多个具有相同“名称”参数的元素时,可以检索所有变量。在互联网上搜索了很多解决方案后,我编写了以下 php 脚本,该脚本获取原始帖子数据并对其进行解析:

<?php
    function RawPostToArray() {
        $rawPostData = file_get_contents("php://input");
        if($rawPostData) {
            $rawPostData = explode('&', $rawPostData);

            if($rawPostData && is_array($rawPostData) && count($rawPostData)) {
                $result = array();
                foreach($rawPostData as $entry) {
                    $thisArray = array();
                    $split = explode('=', urldecode($entry), 2);

                    $value = (count($split) == 2) ? $split[1] : '';

                    if(array_key_exists($split[0], $result)) {
                        if(is_array($result[$split[0]])) {
                            $result[$split[0]][] = $value;
                        }
                        else {
                            $thisArray[] = $result[$split[0]];
                            $thisArray[] = $value;
                            $result[$split[0]] = $thisArray;
                        }
                    }
                    else {
                        $result[$split[0]] = $split[1];
                    }
                }
                return $result;
            }
            else return array();
        }
        else return array();
    }
?>

当 HTML 编码正确时,任何重复的“名称”都会在结果中被放入一个数组中,就像 $_POST 所做的那样。这里可能有很大的改进空间,我敢肯定并不是所有情况都考虑在内,但它对我的应用程序很有效。

可以提出改进的建议表示赞赏。

于 2013-06-28T23:27:13.627 回答