0

我有一个使用 XPath 的搜索功能,当显示结果时也会回显一个复选框。

<form name="save" method="POST" action="saveProcess.php">
            <?php
            foreach ($holidays as $holiday) 
            {
                $resultTable .=  "<p><a href=\"{$holiday->link}\">{$holiday->title}</a>" . "<br/>" . 
                "{$holiday->pubDate}" . "<br>" . 
                "{$holiday->description}" . "<input type='checkbox' name='chk' value='{$holiday->title}' />" . "<br /></p>";            
            }
            ?>
            <input type="submit" value="submit"/>
        </form>

我希望此复选框保留{$holiday->title}提交表单时将显示在 saveProcess.php 中的值,我使用该isset方法检查变量是否已设置。

if (isset($_POST['chk'])) {
    echo $_POST['chk'];
}
else
{
    echo"variable is not set";
}

我哪里错了?

4

2 回答 2

2

问题是您将每个复选框命名为“chk”,当您提交表单时,这些值会被覆盖。这就是为什么它在 saveProcess.php 中没有得到任何东西的原因。您需要做的是指定 $_POST["chk"] 可以包含一个值数组,如下所示:

<input type='checkbox' name='chk[]' value='{$holiday->title}' />

注意名称中的方括号。现在 $_POST["chk"] 将是一个数组。

另一种方法是保持 html 原样,然后在 saveProcess.php 中获取数据,使用:

$HTTP_POST_VARS["chk"]

第一部分基本上解释了为什么它不起作用以及如何修复它,而第二个建议只是获取数据的另一种方式。

祝你有美好的一天!

于 2012-04-06T09:56:50.517 回答
2

您的代码对我来说看起来不错,请记住,仅在选中复选框时才发布复选框的值,如果$_POST['chk']未设置则未设置checket

编辑 - 因为您正在按照评论中的建议重新编写复选框,所以使用数组

        <?php
        foreach ($holidays as $holiday) 
        {
            $resultTable .=  "<p><a href=\"{$holiday->link}\">{$holiday->title}</a>" . "<br/>" . 
            "{$holiday->pubDate}" . "<br>" . 
            "{$holiday->description}" . "<input type='checkbox' name='chk[]' value='{$holiday->title}' />" . "<br /></p>";            
        }
        ?>

然后服务器端$_POST['chk']将是一个数组

于 2012-04-06T09:48:56.790 回答