我试图将复选框值存储在变量$days
中,但是当我将此值存储到数据库时,它只是将最后选中的复选框存储在数据库中...请帮我整理代码以便我可以获得所有选定的值
<?php
if (isset($_POST['days'])) {
foreach ($_POST['days'] as $day) {
$days = " " . $day;
}
} else {
$days = "not available";
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
<tr>
<td>Select Days :</td>
<td>
<input type="checkbox" name="days[]" value="Sunday">Sunday
<input type="checkbox" name="days[]" value="Monday">Monday
<input type="checkbox" name="days[]" value="Tuesday">Tuesday
<input type="checkbox" name="days[]" value="Wednesday">Wednesday
<input type="checkbox" name="days[]" value="Thursday">Thursday
<input type="checkbox" name="days[]" value="Friday">Friday
<input type="checkbox" name="days[]" value="Saturday">Saturday
<input type="checkbox" name="days[]" value="All Days">All Days
</td>
<td></td>
答案 0 :(得分:3)
将正常字符串分配给$days
并在每次迭代时覆盖它。您可以使用.=
运算符追加。 ($days .= ' ' . $day
),但可能更容易使用implode
:
if (isset($_POST['days'])) {
$days = implode(' ', $_POST['days']);
} else {
$days = "not available";
}
注意功能差异很小。 implode
将在日期之间添加空格,而foreach循环也会在开头添加空格。
答案 1 :(得分:0)
每次迭代forech循环时都会覆盖$days
。相反,你想添加它。很可能这就是你要找的东西:
if (isset($_POST['days'])) {
foreach ($_POST['days'] as $day) {
$days .= " " . $day;
}
} else {
$days = "not available";
}
如果是这样,那么你甚至可以简化代码并删除循环:
if (isset($_POST['days'])) {
$days = implode(" ", $_POST['days']);
} else {
$days = "not available";
}
答案 2 :(得分:0)
使用.
连接字符串
$days .= " " . $day;
答案 3 :(得分:-1)
您需要将$ days作为数组,然后将复选框中的值推送到数组中。
$days[] = $day
在你的foreach声明中