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

时间:2015-03-11 09:55:30

标签: php html mysql checkbox

我有一张桌子显示每个未经批准的假期,它看起来像这样:

enter image description here

对于每个未批准的,会有一个新行,所以另一个复选框,但复选框的名称将相同或略有不同(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>

有人能想到更好,更简单的解决方案吗?

4 个答案:

答案 0 :(得分:1)

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

然后,您可以通过迭代发布数据轻松访问您的数据,如下所示:

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

}

答案 1 :(得分:0)

使用像这样的复选框名称

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

此处$your_row_id表示数据库中行的唯一ID。

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

使用foreach解析该数组。

答案 2 :(得分:0)

您可以通过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">';

答案 3 :(得分:0)

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

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

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