0

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

以下是已保存日程的学生列表:

[复选框] 罗布

[复选框] 凯特琳

[复选框] 石心夫人

但我的代码不起作用。

这是我的代码:

<?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

4 回答 4

1

这样做可能更容易:

在表格上:

foreach ($students as $stud) {

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

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

print_r($_POST);
于 2013-06-05T17:55:21.507 回答
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[]" 是学生数组,您可以通过 $_POST['students'] 作为数组访问它。

于 2013-06-05T17:56:34.443 回答
1

看起来您混淆了标签的“名称”属性。几点注意事项:

  • "name" 用作传递给后端的参数的名称
  • 如果选中复选框,“值”是分配给该参数的值

所以你的 foreach 中的行应该看起来更像:

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

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

Array
(
  [0] => Robb
  [1] => Catelyn
)
于 2013-06-05T18:14:28.610 回答
1
foreach($students as $student){
echo "<br/><input type='checkbox' name=" . $student . " value=" . $student . " />";
echo "<label for name=" . $student . ">" . $student . "</label>";   
}   
于 2013-06-05T18:18:51.273 回答