POST 变量到另一个类


POST variable to another class

>我有一个使用 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";
}

我哪里出错了?

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

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

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

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

$HTTP_POST_VARS["chk"]

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

祝你有美好的一天!

你的代码对我来说看起来不错,只要记住,只有在选中复选框时才会发布复选框的值,如果它不是检查$_POST['chk']没有设置,则才会发布

编辑 - 由于您正在按照注释中的建议修改复选框,因此请使用数组

        <?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']将是 ann 数组