从数据库查询构建复选框列表,并在表单提交后保留复选框

时间:2016-06-28 17:32:23

标签: php html

我正在尝试构建一个查询数据库的简单表单,获取电子邮件地址列表,然后根据结果创建表。我希望它能做的是在提交后保留选中的复选框,但是根据我创建表格的方式很难搞清楚它。如果我手动构建表但是这会破坏目的,我可以做到没有问题。这是我正在使用的代码,我希望它做的唯一更改是保留选中的框。

<html>
    <head>
        <title>Test</title>
        <link rel="stylesheet" type="text/css" href="style/style.css"/>
    </head>
    <body>
    <?php include('include/connect.php'); ?>
        <h1>This is a test</h1>
        <div class="emailform">
            <form action="" method="post">
                <table id="emails">
                    <?php
                        while($row = $result->fetch_assoc()) {
                            unset($email);
                            $email = $row['Email'];
                    ?>
                    <tr><td><input type="checkbox" name="select[]" value="<?php echo $email;?>"/><?php echo $email; ?></td></tr>
                    <?php
                        }
                    ?>
                </table>
                <br/><br/>
                <input id="manual" type="text" name="select[]"><br/><br/><br/>
                <button type="submit" name="SubmitButton">Select Email Addresses</button>
            </form> 
        </div>
        <?php
            if(isset($_POST['SubmitButton'])){
                if(isset($_POST['select'])){
                    $shift = $_POST['select'];
                    if (count($shift) > 1 ){
                        $list = implode(", ", $shift);
                        echo $list;
                    } else {
                        echo "$shift[0] <br/>";
                    }
                }
            }
        ?>
    </body>
</html>

帮助将不胜感激,谢谢

2 个答案:

答案 0 :(得分:1)

检查$ row [&#39;电子邮件&#39;]是否为空,然后输出&#34;已检查&#34;属性。

<?php
while($row = $result->fetch_assoc()) {
unset($email);
$email = $row['Email'];
?>
<tr><td><input type="checkbox" name="select[]" value="<?php echo $email;?>"<?php if($row['Email'] != false) { echo ' checked'; } ?>><?php echo $email; ?></td></tr>
<?php
}
?>

答案 1 :(得分:1)

只需检查循环中的当前电子邮件是否存在于$_POST['select']中,如果是,则检查它,如果不存在,请清除检查。此检查将在输入复选框中显示为<?php echo $checked;?>

 <?php
     while($row = $result->fetch_assoc()) {
         unset($email);
         $email = $row['Email'];
         // IF EMAIL EXISTS IN $_POST, CHECK IT.
           $checked = "";
           if(isset($_POST['select'])){
                $shift = $_POST['select'];
                $list = implode(", ", $shift);
                if (strpos($list,$email)===false)
                     $checked = "";         // EMAIL NOT IN $_POST.
                else $checked = "checked";  // EMAIL IS IN $_POST.
           }
 ?>
 <tr><td><input type="checkbox" name="select[]" <?php echo $checked;?>
          value="<?php echo $email;?>"/><?php echo $email; ?></td></tr>
 <?php
     }
 ?>