0

以下のような曜日のチェックボックスがあります。

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

チェックされたチェックボックスは正常に印刷されますが、テキスト入力は印刷されません。

何が間違っている可能性がありますか?

前もって感謝します。

4

1 に答える 1

0

必要なのは、フィールドへのインデックスを使用することだと思います。火曜日が選択されたとしましょう。次に、(チェックボックス)$_POST["day"][1]が表示され、対応するテキストが表示されます (つまり、1 は両方のフィールドのインデックスとして使用されます)。TRUE$_POST["day-detail"][1]

for実際には、すべてのチェックボックスをループすることを想像しているので、インデックスは実際にはループ内の変数になります。

于 2013-01-22T22:43:15.823 に答える