多行和列复选框php

时间:2012-04-10 17:34:37

标签: php

目前我已经根据数据库生成了一组复选框

看起来像是

               Week 1        Week 2       Week 3       Week 4  .....
Student 1        []           []           []            []
Student 2        []            []          []            []
Student 3        []            []          []            [] 
Student 4        []            []          []            []
.....

[]代表复选框

如何获得用户选择的内容?我使用attendance_list[]作为复选框的名称,但是当勾选一个时,它会为所有用户返回值。

谢谢。

2 个答案:

答案 0 :(得分:2)

您应该使用多维数组来代表学生及其出勤率。

例如,

<!-- Student 1, Week 1 to 4 -->
<input type='checkbox' name='attendance_list[1][1]' />
<input type='checkbox' name='attendance_list[1][2]' />
<input type='checkbox' name='attendance_list[1][3]' />
<input type='checkbox' name='attendance_list[1][4]' />


<!-- Student 2, Week 1 to 4 -->
<input type='checkbox' name='attendance_list[2][1]' />
<input type='checkbox' name='attendance_list[2][2]' />
<input type='checkbox' name='attendance_list[2][3]' />
<input type='checkbox' name='attendance_list[2][4]' />

<!-- And, so on.. -->

服务器端,您将获得已经检查过的元素数组。使用数组的索引,您可以确定哪个学生在几周内出席。

如果选中了上述所有复选框,则您的数组将如下所示:

Array
(
    [attendance_list] => Array
        (
            [1] => Array
                (
                    [1] => on
                    [2] => on
                    [3] => on
                    [4] => on
                )

            [2] => Array
                (
                    [1] => on
                    [2] => on
                    [3] => on
                    [4] => on
                )

        )

)

这表明学生1和学生2都参加了4周。

答案 1 :(得分:2)

我想看看你的代码,如果没关系的话。我现在猜对了答案。

当您使用attendance_list []作为您的名字时,PHP会自动为POST中的每个复选框分配一个不同的字段作为POST返回中的数组。

如果要区分学生,可以通过将student_1 [(#week)]指定为名称并在选中时将“Y”指定为值来在HTML中执行此操作。在服务器端,通过学生的POST并收集值为“Y”的所有键。默认情况下它应该存在,未经检查的那些不会通过,但我之前已经遇到过奇怪的行为。

Josh更进一步,提供了一个多维阵列。如果您对通过多维数组进行排序感到满意,这将为您提供所需的功能。