如何在表单提交后检查复选框

时间:2015-11-14 23:32:23

标签: javascript php html mysql

我有3个复选框,我可以将它们提交到MySQL。它插入完美,但问题是,当我回到编辑游戏时,复选框根本没有检查它们的正确值(它们是空的)。 我知道这个网站上有很多关于这个问题的答案,但我发现它们都不起作用。也许它是我做错了代码的东西。我会在这里发布。

这是我的代码的短版,因为它太大了。

if (isset($_GET['add']) || isset($_GET['edit'])) {

  $checkbox = ((isset($_POST['available_consoles']) && $_POST['available_consoles'] != '') ? sanitize($_POST['available_consoles']) : '');

 if (isset($_GET['edit'])) {
    $checkbox = ((isset($_POST['available_consoles']) && $_POST['available_consoles'] != '') ? $_POST['available_consoles'] :  $game['available_consoles']);
 }

 if ($_POST) {
    // Separate ech checkbox value with a SPACE into the database.
    $checkbox = implode(', ', $_POST['available_consoles']);

    // DO INSERT HERE
 }

}
<!-- Add the Add Form -->
        <form action="games.php?<?php echo ((isset($_GET['edit'])) ? 'edit='.$edit_id : 'add=1'); ?>" method="post" enctype="multipart/form-data">

          <!-------------- AVAILABLE CONSOLES ------------------->
            <div class="form-group col-md-6">
                <label for="checkbox">Available Consoles:&nbsp;</label>
                <label class="checkbox">
                    <input type="checkbox" <?php if (in_array('Xbox One', $_POST['available_consoles'])) {echo 'checked';} ?> name="available_consoles[]" value="Xbox One">
                </label>
                <label class="checkbox">
                    <input type="checkbox" <?php if (in_array('PS4', $_POST['available_consoles'])) {echo 'checked';} ?> name="available_consoles[]" value="PS4">
                </label>
                <label class="checkbox">
                    <input type="checkbox" <?php if (in_array('PC', $_POST['available_consoles'])) {echo 'checked';} ?> name="available_consoles[]" value="PC">
                </label>
            </div>
           <div class="form-group pull-right">
                <a href="games.php" class="btn btn-default">Cancel</a>
                <input type="submit" value="<?php echo ((isset($_GET['edit'])) ? 'Edit ' : 'Add '); ?> Game" class="btn btn-success">
            </div>

</form>

在复选框旁边显示以下错误消息:

Notice: Undefined index: available_consoles in C:\xampp\htdocs\Gamesite\admin\games.php on line 425

Warning: in_array() expects parameter 2 to be array, null given in C:\xampp\htdocs\Gamesite\admin\games.php on line 425
name="available_consoles[]" value="Xbox One">

获取所有3个复选框

1 个答案:

答案 0 :(得分:0)

这就是你需要的

<input type="checkbox" <?php if (in_array('Xbox One', $_POST['available_consoles'])) {echo 'checked';} ?>id="checkbox" name="available_consoles[]" value="Xbox One"> 

替换in_array('Xbox One' 与每个输入的其他控制台名称

这是一个简单的功能:

function checked($t,$v){
  if (in_array("{$t}", $v)) {
    return 'checked';
  }
}

使用:<?php echo checked('Xbox One',$con); ?>

它不是一个数组,也不是来自$ _POST它实际上来自数据库所以我附加了我的代码以匹配答案。