【问题标题】:PHP Value for HTML CheckboxHTML 复选框的 PHP 值
【发布时间】:2011-01-05 13:24:07
【问题描述】:

我有一个函数可以设置和取消设置 $_SESSION 变量,具体取决于从我的主页中的表单提交的内容。

函数if语句:

$_SESSION['search'] = true;
if($_POST['searchtv']){
    $_SESSION['searchtv'] = true;
} else {
    unset($_SESSION['searchtv']);
}
if($_POST['searchmovie']){
    $_SESSION['searchmovie'] = true;
} else {
    unset($_SESSION['searchmovie']);
}

searchtv 和 searchmovie $_POST 变量通过以下复选框设置:

<input type="checkbox" name="searchmovie" value="movie" <? echo isset($_SESSION['searchmovie']) ? 'checked' : ''; ?>"/>

但是选中的值似乎总是为 false 并显示 '',因此没有设置“选中”以在框中显示对勾。

我知道 $_SESSION 变量设置正确但是因为在同一个文件中我有另一个 IF 语句(如下)可以 100% 工作。

if(isset($_SESSION['searchtv'])){
    $database->searchTV($_GET['show'], $session->uid);
}
                                if(isset($_SESSION['searchmovie'])){
    $database->searchMovies($_GET['show'], $session->uid);
}
                                if(!isset($_SESSION['searchtv']) && !isset($_SESSION['searchmovie'])){
    $database->searchTV($_GET['show'], $session->uid);
    $database->searchMovies($_GET['show'], $session->uid);
}

如果我只勾选 searchtv 复选框,它只会运行 searchTV 功能等等..所以我知道它正在设置并且可以工作..只是无法获得对复选框的反馈说是的,它在搜索按钮时被勾选被选中。

【问题讨论】:

    标签: php html checkbox


    【解决方案1】:

    @medoix:尝试改变这个

    <input type="checkbox" name="searchmovie" value="movie" <? echo isset($_SESSION['searchmovie']) ? 'checked' : ''; ?>"/>
    

    到这里

    <input type="checkbox" name="searchmovie" value="movie" <?php if (isset($_SESSION['searchmovie'])) { echo 'checked="checked" '; } ?>/>
    

    【讨论】:

    • 是的,您需要checked='checked'checked=''。现在你只是在回应checked
    • 工作愉快!太感谢了。真是太神奇了,这么一件小事竟然让我忘记了!
    【解决方案2】:

    您意识到检查底部附近$_SESSION['searchtv'] &amp;&amp; $_SESSION['searchmovie'] 的代码部分都是!isset。它只会在两者都未选中时运行,而不是在它们都选中时运行。

    【讨论】:

    • 这很好,我确实是这样设计的,因为默认情况下这两个框都没有选中。但是,当您提出这一点时,它会提出他们是否选择两个框的选项。但是,如果两者都被选中,那么每个函数都将相互依赖地运行。
    • 似乎有点奇怪。真的应该是一个 if/else if/else if/else 结构。如果两者都设置,则两者都执行,否则如果设置了电视,则运行电视,否则如果设置了电影,则运行电影,否则“请选择搜索方法”。然后默认选中两者,这与在当前方法中未选中它们完全相同。当然,您必须将它们设置为 false 而不是在未选中这些框时取消设置它们,然后检查它们是 === true 还是 false 而不是 isset 才能做到这一点。
    猜你喜欢
    • 1970-01-01
    • 2015-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-25
    • 2016-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多