为了账号安全,请及时绑定邮箱和手机立即绑定

在 PHP 中检查一个框是否被选中的函数

在 PHP 中检查一个框是否被选中的函数

PHP
杨魅力 2022-06-11 09:51:24
我试图掌握如何正确理解 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>
查看完整描述

2 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

  1. 您需要删除表单中的标签foreach,您应该只<form method="post"> 在表单中使用 1。并将复选框输入放在主表单中;

  2. PHP 函数无法访问该函数之外的变量,因此您应该将该变量放在参数中。

下面是工作代码:

<!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"/><br>


    <?php

    $checkboxNames = array();

    for ($x = 1; $x <= 100; $x++) {

        $checkboxStr     = $x."checkbox";

        $checkboxNames[] = $checkboxStr;

        echo "<input type=\"checkbox\" name=\"$checkboxStr\" value=\"$checkboxStr\">$checkboxStr <br>";

    }


    echo("<hr>");

    echo("<h2>Status of Checkboxes:</h2>");


    function checkFunction($checkboxNames)

    {

        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($checkboxNames);

    }

    ?>


</form>


</body>

</html>


查看完整回答
反对 回复 2022-06-11
?
繁花如伊

TA贡献2012条经验 获得超12个赞

您仅在所有复选框都在未提交的单独表单中时才提交第一个表单。尝试重写循环以在主表单中包含复选框输入。



查看完整回答
反对 回复 2022-06-11
  • 2 回答
  • 0 关注
  • 178 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号