>我有一个使用 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 数组