我想创建一个复选框列表,其中包含来自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打印它时,它包含正确的值。
答案 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”属性。几点说明:
因此,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>";
}