如何设置复选框以检入循环?

时间:2015-05-27 22:47:02

标签: php post checkbox

我想知道如何确保在回发中检查复选框,例如,如果有人将地址字段留空,则应确保用户不必再次重新填充整个表单。在这种情况下,我正在生成31个复选框。这真的令人沮丧。

$output_checkbox = '';
$checked = '';
for ($i=1; $i <= 31; $i++) { 
    if (isset($_POST['dagen'])) {
        foreach ($_POST['dagen'] as $dag) {
            if ($dag == $i) {
                $checked . $i = 'checked';
            }
        }
    }
    $output_checkbox .= '<input type="checkbox" name="dagen[]" value="' . $i . '" id="day_' . $i . '"' . $checked . ' /><label for="day_' . $i . '">Dag ' . $i . '</label>';
}

这是表格,但没有问题:

<form action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="post">
 <div>
 <label for="email">Email:</label> 
 <input id="email" type="text" name="email" value="<?php if(isset($_POST['email'])) { echo $_POST['email'];} ?>" /> 
 </div> 
 <div>
 <label for="month">Maand:</label>
    <select id="month" name="month">
        <?php echo $output; ?>
    </select>
</div>
 <div> 
 Dagen: 
 <?php echo $output_checkbox; ?> 
 </div> 
 <input type="submit" name="btnSend" value="Verzenden" /> 
</form>

这是一个我通常如何做的例子,但它更容易,因为它来自数据库:

$output = '';
while ($row = $result->fetch_array(MYSQLI_BOTH)) {
 $selected = '';
 if (isset($_POST['month']) && $_POST['month'] == $row['id']) {
   $selected = 'selected';
 }
 $output .= '<option value="' . $row['id'] . '"' . $selected . '>' .   $row['naam'] . '</option>';
}

1 个答案:

答案 0 :(得分:0)

这样的事情:

$output_checkbox = '';
for ($i=1; $i <= 31; $i++) { 
    if (isset($_POST['dagen'])) {
        foreach ($_POST['dagen'] as $dag) {
            if ($dag == $i) {
                $checked = 'checked';
            }
            else{
                $checked = '';
            }
             $output_checkbox .= '<input type="checkbox" name="dagen[]" value="' . $i . '" id="day_' . $i . '"' . $checked . ' /><label for="day_' . $i . '">Dag ' . $i . '</label>';

        }
    }
}