0

現在、表示するオプションの回数に応じてループする for ループを通過するフォームがあります。

そのコードは次のとおりです。

<?php for ($i =1; $i <=20; $i++) { ?>
                <tr>
                        <td><center><input type="text" name="qnsNo[]" class="qnsNo"/></center></td>
                    <td><input type="text" name="question[]" class="question"/></td>
                    <td><select name="input[]" class="dropdown">
                            <option value="Normal text line, no input required*">Normal text line, no input required*</option>
                            <option value="Multiple choice (only one answer) [Radio Button]">Multiple choice (only one answer) [Radio Button]</option>
                            <option value="Multiple choice (multiple answers) [Check box]">Multiple choice (multiple answers) [Check box]</option>
                            <option value="Drop-Down Box">Drop-Down Box</option>
                            <option value="Comment/Essay Box [Textarea]">Comment/Essay Box [Textarea]</option>
                            <option value="Single Line Textbox">Single Line Textbox</option>
                        </select></td>
                    <td><input type="text" name="options[]" class="option"/></td>
                    <td><input type="text" name="others[]" class="others"/></td>
                    <input type="hidden" name="compulsory[]" value=""/>
                    <td><center><input type="checkbox" name="compulsory[]" value="Compulsory"/></center></td>

                    </tr>
                    <?php } ?>

このフォームが実際に行うことは、最後の列「必須フィールド」に対して、ユーザーが独自のフォームを作成できるようにすることです。この質問を必須にするかどうかを選択できるようにします。しかし、現在、チェックボックスの結果をデータベースに正しく挿入できないようです。

チェックされていないチェックボックスの回答をデータベースに挿入したい場合は、実際のチェックボックス行の前に隠しフィールドを配置できると聞いています.チェックされていない場合とチェックされている場合の値は?チェックされていない場合は「null」になり、チェックされている場合は「強制」が挿入されます...

必要に応じて、データベースに挿入するためのコードを次に示します。

$sql_array = array();
    foreach ($_POST['question'] as $row => $name) {

        $question = $name;
        $qnsNo = $_POST['qnsNo'][$row];
        $input = $_POST['input'][$row];
        $options = $_POST['options'][$row];
        $others = $_POST['others'][$row];
        $compulsory = $_POST['compulsory'][$row];

        $idQuery = "SELECT max(surveyID) FROM scSurveyForm WHERE createBy = '$createBy' AND writeUp = '$writeUp'";
        $idResult = sqlsrv_query($conn, $idQuery);
        $rows = sqlsrv_fetch_array($idResult);
        $lastID = $rows[0];

        $sql_array[] = "('" . $question . "'," . $lastID . ",'" . $qnsNo . "','" . $input . "','" . $options . "','" . $others . "','" . $compulsory . "')";

        if (!empty($question)) {

            $query_single = "INSERT INTO scFormLayout(question, surveyID, qnsNo, input, options, others, compulsory)
  VALUES" . implode(', ', $sql_array);
            echo $query_single.'<br/>';
            $status = sqlsrv_query($conn, $query_single);
            $sql_array = array();
        }
    }
4

1 に答える 1

0

チェックボックスの名前に番号を追加します。

<input type="checkbox" name="compulsory[<?php echo $i; ?>]" ... >

チェックボックスが存在するかどうかをテストします$_POST

// you get 'on' or NULL
$compulsory = isset($_POST['compulsory'][$row]) ? $_POST['compulsory'][$row] : NULL;

またはそれより短い:

// you get TRUE or FALSE
$compulsory = isset($_POST['compulsory'][$row]);
于 2013-06-05T03:55:22.150 に答える