如何在php

时间:2015-06-21 11:46:23

标签: php arrays checkbox

我试图将复选框值存储在变量$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>

         

4 个答案:

答案 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声明中