【问题标题】:radio buttons with cookie带有 cookie 的单选按钮
【发布时间】:2012-09-27 11:41:06
【问题描述】:

我尝试为 2 个单选按钮设置一个 cookie,但我不知道我做错了什么。即使页面刷新,我也需要在检查按钮时保持选中状态。有人可以给我一个建议吗?谢谢

这是我的 test.php

<?php 
    if(isset($_POST['radio1'])) {
      setcookie('radio1', true, 600, '/');
      setcookie('radio2', false, 600, '/');
    } else if(isset($_POST['radio2'])) {
      setcookie('radio2', true, 600, '/');
      setcookie('radio1', false, 600, '/');
    }
    ?>

    <form method="POST" action="test.php">
      <div id="radio">
        <input type="radio" id="radio1" name="radio" checked="checked" />
        <label for="radio1">Choice 1</label>
        <input type="radio" id="radio2" name="radio" />
        <label for="radio2">Choice 2</label>
      </div>
    </form>

【问题讨论】:

    标签: php button cookies radio


    【解决方案1】:

    我不太了解您的代码,但以下应该为您检查正确的单选按钮:

    <?php 
    if(isset($_POST['radio']) && $_POST['radio']=='val1') {
      setcookie('radio1', true, 600, '/');
      $radio1=' checked ';
      $radio2='';
      setcookie('radio2', false, 600, '/');
    } else if(isset($_POST['radio'])&& $_POST['radio']=='val2') {
      setcookie('radio2', true, 600, '/');
      $radio1='';
      $radio2=' checked ';
      setcookie('radio1', false, 600, '/');
    }
    ?>
    
    <form method="POST" action="test.php">
      <div id="radio">
    <input type="radio" id="radio1" name="radio" <?php echo $radio1;?> value="val1" />
    <label for="radio1">Choice 1</label>
    <input type="radio" id="radio2" name="radio" <?php echo $radio2;?> value="val2" />
    <label for="radio2">Choice 2</label>
    <input type="submit">
      </div>
    </form>
    

    【讨论】:

    • 仍然无法正常工作。我检查了一个我给刷新的按钮,但没有任何反应,它们都未选中。我是否在此代码中添加了其他内容,例如提交按钮或 javascript?
    • @Cola 更详细地查看代码,我发现我们错过了设置一个值并在 PHP 代码中检查它。与标签关联的 ID 对 CSS 和 Javascript 有意义,但对 PHP 没有意义。使用单选按钮,我们需要检查值。我更新了代码。
    • 我检查过但没有工作。还有另一种不使用 cookie 的方法吗?
    • @Cola 上面的代码(删除了除工作代码之外的任何内容)对我来说是正常工作的(我添加了一个提交按钮),它保存了从表单提交到表单提交的数据。您是否更改了表单以匹配答案 - 添加 value='val1' 位?
    • 从一个页面到另一个我的意思是 $GET 或类似的东西,因为我真正需要这个收音机是当有人检查一个按钮并在他进入下一页时从我的主页按搜索保持他选择的选项。但在主页上,默认检查始终为 radio1。我认为更简单。
    【解决方案2】:

    这是 W3C 的 checked="checked" 而不仅仅是 checked

    <?php 
        if (isset($_POST['radio']) && $_POST['radio'] == "radio1") {
            setcookie('radio1', "true", 600, '/');
            setcookie('radio2', "false", 600, '/');
            $radio1 = ' checked="checked"';
            $radio2 = '';
        } else if(isset($_POST['radio']) && $_POST['radio'] == "radio2") {
            setcookie('radio1', "false", 600, '/');
            setcookie('radio2', "true", 600, '/');
            $radio1 = '';
            $radio2 = ' checked="checked"';
        }
    
        if (isset($_COOKIE['radio1']) && $_COOKIE['radio1'] == "true") {
            $radio1 = ' checked="checked"';
            $radio2 = '';
        } else if (isset($_COOKIE['radio2']) && $_COOKIE['radio2'] == "true") {
            $radio1 = '';
            $radio2 = ' checked="checked"';
        }
        ?>
    
        <form method="POST" action="test.php">
            <div id="radio">
                <input type="radio" id="radio1" name="radio" value="radio1" <?= $radio1; ?> />
                <label for="radio1">Choice 1</label>
                <input type="radio" id="radio2" name="radio" value="radio2" <?= $radio2; ?> />
                <label for="radio2">Choice 2</label>
            </div>
        </form>
    

    【讨论】:

    • 我忘了测试 cookie 的值,现在试试。 :)
    • 我必须添加javascript还是提交按钮?
    • 不,我的错,我没有测试您的代码,您忘记了收音机中的值。
    猜你喜欢
    • 1970-01-01
    • 2021-06-19
    • 2013-09-25
    • 2013-08-26
    • 2018-08-27
    • 1970-01-01
    • 2017-10-11
    • 2012-11-28
    • 1970-01-01
    相关资源
    最近更新 更多