生成多个复选框并对其进行评估

Generate multiple checkboxes and evaluate them

我有一个 table 显示每个未批准的休假,它看起来像这样:

对于每个未批准的项目,都会有一个新行,因此会出现另一个复选框,但复选框的名称将相同或略有不同(name="approve1")。我个人认为这不是一个好习惯...

而且评价也不是很好,因为要入库

<form role="form" method="post" action="" id="form">
                <h2><?php echo $title ?></h2>
                    <?php 
                        $page = date('F');
                        $page = lcfirst($page);
                        echo "<p><a href='$page.php'>Back</a></p>";
                    ?>
                    <hr>
                <?php



                if($i == 0){
                echo "<h3>No unapproved leaves.</h3>";
                }else{
                echo '<table class="table table-striped table-hover">';
                echo '<thead>';
                    echo '<th>';
                    echo 'Start';
                    echo '</th>';
                    echo '<th>';
                    echo 'End';
                    echo '</th>';
                    echo '<th>';
                    echo 'Employee';
                    echo '</th>';
                    echo '<th>';
                    echo 'Approve';
                    echo '</th>';
                echo '</thead>';
                echo '<tbody>';
                for($j =0; $j < $i; $j++){


                echo '<tr>';
                    echo '<td>';
                    echo $unapproved[$j]['start'];
                    echo '</td>';
                    echo '<td>';
                    echo $unapproved[$j]['end'];
                    echo '</td>';
                    echo '<td>';
                    $id = $unapproved[$j]['employee_FK'];
                    $result = mysql_query("select name, surname from employee where employee_ID =  $id");
                    while ($row = mysql_fetch_assoc($result)) {
                    $employee[] = $row;
                    }
                    echo $employee[0]['name'], " ", $employee[0]['surname'];
                    echo '</td>';

                    echo '<td>';
                    echo  '<input type="checkbox" name="approve" value="1" id="approve">';
                    echo '</td>';
                echo '</tr>';
                }
                echo '</tbody>';
                echo '</table>';
                }

                ?>
                <input type="submit" name="submit" value="Submit" class="btn" >
            </div>

        </div>



    </form>

谁能想到更好、更简单的解决方案?

像这样使用复选框名称

<input type="checkbox" name="approve[]" value="<?php $your_row_id; ?>" id="approve">

这里$your_row_id表示数据库中一行的唯一id。

并且在 post 中,您将获得一个名为 approve 的数组,其中包含所有选定的值。

使用 foreach 解析该数组。

您可以通过 HTTP 传输 arrays :

echo '<input type="checkbox" name="approve[]" value="', $id, ']" id="approve">';

现在 $_GET['approve'] 将是一个仅包含选中框值的数组。

您还可以指定与值关联的键:

echo '<input type="checkbox" name="approve[', $id, ']" value="', $id, ']" id="approve">';

您可以在“name”属性中使用数组表示法生成复选框。

<input type="checkbox" name="approve[]" value="1" id="approve">

发送后,您可以使用数组符号恢复值 $_GET['approve'][0],...

大多数框架中表格数据的做法是将它们命名为 Model[id][field],因此在您的示例中它看起来像 "<input type='checkbox' name='leave[$j][approved]' value='1' id='leave_$j_approved'>"

然后您可以像这样迭代 post 数据来轻松访问您的数据:

foreach($_POST['leave'] as $id => $values) {

}