如何$ _POST用PHP输入与checkbox数组相关的文本?

时间:2013-01-22 22:37:29

标签: php arrays forms input checkbox

我有几周的复选框,如下所示:

<input type="checkbox" name="day[]" id="monday" value="Monday">
<label for="monday">Monday</label>
<input name="day-detail[]" type="text" />

<input type="checkbox" name="day[]" id="tuesday" value="Tuesday">
<label for="tuesday">Tuesday</label>
<input name="day-detail[]" type="text" />

等等。

请注意,每天都有相关的输入文字。

我想知道只有选中复选框才能打印输入文本字段。我需要与其他许多复选框一起执行此操作,因此我尝试使用以下函数:

<?php
function checkboxes($checkbox_field, $default = '') {
    if(isset($_POST[$checkbox_field]) and !empty($_POST[$checkbox_field])) {
        $post_field = $_POST[$checkbox_field];
        if (is_array($post_field)) {
            if(!empty($_POST[$checkbox_field.'-detail'])) {
                return join(', ', $post_field.': '.$_POST[$checkbox_field.'-detail']);
                echo $_POST[$checkbox_field.'-detail'];
            }
            else {
                return join(', ', $post_field);
                echo $_POST[$checkbox_field.'-detail'];
            }
        }
    } else {
        return $default;
    }
}

echo "The weekly sales are:  ".checkboxes('day');
?>

这就是我要打印的内容:

  

星期一:value from text input,星期二:value from text input

已选中复选框,但文本输入不是。

可能出现什么问题?

提前致谢。

1 个答案:

答案 0 :(得分:0)

我认为你需要的是使用字段的索引。所以我们假设周二被选中了。然后$_POST["day"][1]会为您提供TRUE(复选框),$_POST["day-detail"][1]会为您提供相应的文字(即1用作两个字段的索引)。

实际上,索引实际上是for循环中的一个变量,因为我想你会循环遍历所有复选框。