【问题标题】:PHP - Saving checkbox with submit buttonPHP - 带有提交按钮的保存复选框
【发布时间】:2017-06-07 06:58:13
【问题描述】:

我正在尝试构建一个清单,您可以在其中选择/取消选择多个复选框并使用提交按钮将它们保存到页面。

下面是我正在使用的代码:

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <input type="submit" value="Save" name="save" id="save" />
    <ul>
        <li><input type="checkbox" />Tickets</li>
            <ul>
                <li><input type="checkbox" name="person1" id="person1" value="1" />Person 1's ticket</li>
                <li><input type="checkbox" name="person2" id="person2" value="2" checked />Person 2's ticket</li>
                <li><input type="checkbox" name="person3" id="person3" value="2" />Person 3's ticket</li>
                <li><input type="checkbox" name="person4" id="person4" value="2" checked />Person 4's ticket</li>
            </ul>
</form>

PHP:[仅显示 1]

            <?php
            if (isset($_POST["submit"])) {
                echo "<input type='checkbox' name='person1' id='person1' value='1' checked />";
            } else {
                echo 'There was an error.';
            }
        ?>

刷新页面后,我似乎无法获得用于保存数据的复选框。

单击保存后,我希望重新加载页面并使用复选框保存其数据。

我试图保持这个非常简单,所以代码量越少越好。我能找到的一切都需要使用 jQuery 或数据库。

我对 PHP 相当陌生,非常感谢任何帮助。

可以在 www.magycka.us 上看到我的网站的实时版本,以便更好地了解它的用途。

【问题讨论】:

    标签: php html checkbox


    【解决方案1】:

    你需要:

    1. 将数据发送到 PHP。 (给输入一个namevalue)。
    2. 写一些PHP来注意这一点(它将在$_POST中)并有条件地输出checked属性。

    如果您希望在重新加载页面时保持结果,您还需要将该数据存储在某处(如数据库),然后在页面通过 GET 请求而不是 POST 请求加载时检索它)。

    【讨论】:

    • 这有点含糊。我已根据您的回答更新了我的代码和文档。请再看看。我不确定如何处理 PHP 部分。正如我所说,PHP 对我来说是全新的。
    • @CodyM — 您查看$_POST 中的任何内容的唯一时间是检查$_POST["save"] 时……但您没有名为save 的输入。你从不看$_POST['person1'](或2或等等)。您每次都使用checked 属性回显整个输入。因此,您的条件是检查错误的内容,并且不限于确定是否设置了 checked 属性。
    • 我将保存按钮更新为保存名称。我将如何去做这样的事情?类似于: "; } else { echo '有一个错误。'; } ?> ???
    • @CodyM — 您需要使 checked 属性 的输出以选中的复选框为条件。您仍然在以此为条件输出 整个输入元素。您还需要为复选框提供相同的名称!
    【解决方案2】:

    通过创建一个 mysql 数据库并使用 PHP 将值作为 1 或 0 存储在数据库中来解决这个问题。

    【讨论】:

      【解决方案3】:

      您需要一个存放选择的地方,例如数据源(SQL 数据库)、会话或 cookie 可以做到这一点。 SQL是如果您希望信息被分割以供以后在用户群中使用。如果您正在寻找过滤功能之类的临时解决方案;我建议使用会话。所以这是我的版本。 :)

      <?php
      session_start();
      if($_SERVER["REQUEST_MOTHOD"] == "POST) {
        if(!empty($_POST["person1"])){
          $_SESSION["person1"] = $_POST["person1"];
        }
        if(!empty($_POST["person2"])){
          $_SESSION["person2"] = $_POST["person2"];
        }
        if(!empty($_POST["person3"])){
          $_SESSION["person3"] = $_POST["person3"];
        }
        if(!empty($_POST["person4"])){
          $_SESSION["person4"] = $_POST["person4"];
        }
      }
      ?>
        <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
          <input type="submit" value="Save" />
          <ul>
            <li><input type="checkbox" />Tickets</li>
            <ul>
              <li><input type="checkbox" value="person1" checked />Person 1's ticket</li>
              <li><input type="checkbox" value="person2" checked />Person 2's ticket</li>
              <li><input type="checkbox" value="person3" <?php echo (isset($_SESSION[ "person3"]))? "checked": ""; ?> />Person 3's ticket</li>
              <li><input type="checkbox" value="person4" <?php echo (isset($_SESSION[ "person3"]))? "checked": ""; ?> />Person 4's ticket</li>
            </ul>
        </form>

      我对会话函数的使用不是正确的方法,因为它主要用于用户验证,但它应该可以解决问题。

      【讨论】:

      • 这应该保留数据直到浏览器关闭
      • 这需要所有用户都可以查看。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-21
      • 1970-01-01
      • 2015-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-13
      相关资源
      最近更新 更多