创建一个复选框列表,其中包含来自php数组的值作为其标签

时间:2013-06-05 17:52:18

标签: php

我想创建一个复选框列表,其中包含来自php数组的值作为其标签。我希望它看起来像

  

以下是保存时间表的学生列表:

     

[复选框] Robb

     

[复选框] Catelyn

     

[复选框] Lady Stoneheart

但我的代码不起作用。

这是我的代码:

<?php

    $students = $_SESSION['students'];

    echo "Here is the list of students whose schedules are saved:<br/><br/>";

    echo "<form action='checkbox-form.php' method='post'>
    Load student?<br/>";

    foreach ($students as $stud) {

        echo "<br/><input type='checkbox' name=" . $stud . " value='load' />";
    }

    echo "<br/><br/><input type='submit' name='formSubmit' value='Submit' />
    </form>";

?>

数组不是问题,因为当我通过foreach打印它时,它包含正确的值。

4 个答案:

答案 0 :(得分:1)

这样做可能更容易:

在表格上:

foreach ($students as $stud) {

    echo "<br/><input type='checkbox' name=\"students[]\" value='$stud' />$stud<br>";
}

在处理程序上查看它传递的内容:

print_r($_POST);

答案 1 :(得分:1)

如果所有“值”字段都是“加载”,在这种情况下它们是“加载”,则不会发生任何事情,因为您的PHP不会看到任何不同的值。 你应该将所有这些复选框的名称值设置为相同的东西,并将值设置为学生的名字(虽然这是糟糕的设计 - 你应该将值设置为代表学生的数字DB id-如果你有同名的学生?)

所以:

for($i = 0; i < count($students); $i++) {
    $s = $students[$i];
    echo "<br/><input type='checkbox' name="students[]" value='$s' />";
}

在这种情况下,name =“students []”是学生ARRAY,您可以通过$ _POST ['students']作为数组访问。

答案 2 :(得分:1)

看起来你已经混淆了标签的“name”属性。几点说明:

  • “name”用作传递给后端的参数的名称
  • “value”是选中复选框时将分配给该参数的值

因此,foreach中的行应该更像:

echo '<br /><input type="checkbox" name="students[]" value="'.$stud.'" />'.$stud;

如果检查了Robb和Catelyn,您将在$ _POST ['students']变量服务器端获得以下内容:

Array
(
  [0] => Robb
  [1] => Catelyn
)

答案 3 :(得分:1)

foreach($students as $student){
echo "<br/><input type='checkbox' name=" . $student . " value=" . $student . " />";
echo "<label for name=" . $student . ">" . $student . "</label>";   
}