【发布时间】:2019-12-15 21:44:22
【问题描述】:
我试图掌握如何正确理解 POST 的工作原理,并决定制作一个生成 100 个复选框的 PHP 小程序,然后单击文档顶部的按钮,调用一个函数循环遍历所有复选框并说明它们是否被选中。但是,我实施它的方式似乎不起作用。
这是我在编写此脚本时所想的一个更循序渐进的过程,如果有人能告诉我我的想法中的缺陷,我将不胜感激。
- 在带有
method=post的表单中创建一个按钮。 - 在 PHP 中创建一个数组来存储所有复选框名称。
- 创建一个 for 循环。在循环的每次迭代中,都会创建一个格式为
#checkbox的字符串,因此每个复选框都有自己的唯一标识符。这些字符串中的每一个都存储在一个数组中。 PHP 然后回显一个带有method=post的表单,每个表单内都有一个复选框。每个复选框都有其唯一的名称。 - 每个复选框创建后,您可以通过单击按钮查看每个复选框是否被选中,该按钮调用
checkFunction()函数。 - 在函数中,有一个
foreach循环。此循环遍历数组中的每个元素以获取复选框名称,使用isset来查看复选框是否被选中,如果是则回显。
这对我来说似乎很简单,但无论出于何种原因它似乎都不起作用。谁能解释一下为什么不呢?
<!DOCTYPE html>
<html>
<head>
<title>Checked Boxes</title>
</head>
<body>
<form method="post">
<input type="submit" name="submit_checked" class="button" value="Check if checkbox is checked"/>
</form>
<?php
$checkboxNames = array();
for ($x = 1; $x <= 100; $x++) {
$checkboxStr=$x."checkbox";
$checkboxNames[] = $checkboxStr;
echo "<form method=\"post\"><input type=\"checkbox\" name=\"$checkboxStr\" value=\"$checkboxStr\">$checkboxStr</form>";
}
echo("<hr>");
echo("<h2>Status of Checkboxes:</h2>");
function checkFunction(){
foreach ($checkboxNames as $currentName){
if (isset($_POST["$currentName"]))
echo("<p>$currentName is checked!</p>");
else
echo("<p>$currentName is not checked!</p>");
}
}
if(isset($_POST['submit_checked']))
checkFunction();
?>
</body>
</html>
【问题讨论】:
标签: php html for-loop checkbox foreach