0

複数選択クイズを作成していますが、複数の配列をデータベースに挿入する方法がわかりません。array_combine を使用して最初の 2 つの配列を挿入できますが、3 番目、4 番目、5 番目、および 6 番目の配列には挿入できません。質問と回答を挿入できますが、選択肢 A、B、C、および D は挿入できません。

私は次のようなことをしようとしています

foreach(array_combine($_POST['inQuestion'], $_POST['inAnswer'], $_POST['inA'], $_POST['inB'], $_POST['inC'], $_POST['inD' ]) $question => $answer => $A => $B => $C => $D) {

助けてください。これが私のコードです。

<?php
    if(isset($_POST['btnCreate'])) {

        $inQuestion = array($_POST['inQuestion']);
        $inAnswer = array($_POST['inAnswer']);
        $inA = array($_POST['inA']);
        $inB = array($_POST['inB']);
        $inC = array($_POST['inC']);
        $inD = array($_POST['inD']);
        $inLesson = $_POST['inLesson'];
        $inQuizNo = $_POST['inQuizNo'];

        $sql = "SELECT * FROM lessons WHERE title='$inLesson'";
        $query = mysql_query ($sql);
        $row = mysql_fetch_assoc($query);

        $lessonID = $row['lessonID'];

        foreach(array_combine($_POST['inQuestion'], $_POST['inAnswer']) as $question => $answer) {

            $sql = "INSERT INTO `test` (question, answer, A, B, C, D, lessonID, quizNo) VALUES ('$question', '$answer', '$A', '$B', '$C', '$D', '$lessonID', $inQuizNo)";
            $query = mysql_query( $sql ); 
        }

    }
?>

<div class="panel panel-info">
<div class="panel-heading">
    <h4>Create Assessment - Multiple Choice</h4>
</div>

<div class="panel-body">

    <form method="post">

        <br>

        <div>
            <div class="col-md-4">
                <strong>Lesson</strong><br>
                <select class="form-control" name="inLesson">
                    <option></option>
                    <option disabled></option>

                    <?php
                        $sql2 = "SELECT * FROM lessons WHERE courseID='$_GET[courseID]'";
                        $query2 = mysql_query ($sql2);                          
                        while ($row2 = mysql_fetch_assoc($query2)) {
                    ?>

                        <option><?php echo $row2['title']; ?></option>

                    <?php   } ?>

                </select>
            </div>
            <div class="col-md-4">
                <strong>Quiz No.</strong><br>                   
                <input required type="number" class="form-control" name="inQuizNo" min="1" max="100">
            </div>
            <div class="col-md-4">
                <div class="pull-right">
                <br>
                <input type="button" value="Add" id="addButton" class="btn btn-info">
                <input type="button" value="Remove" id="removeButton" class="btn btn-warning">
                </div>
            </div>
        </div>

        <br><br><br><br><br>

        <div id='TextBoxesGroup'>
            <div id="TextBoxDiv1" class="form-group">

                <h2><span class="label label-primary">No. 1</span></h2>
                <br><br>

                <div class="col-md-10">
                    <label>Question</label><input type='text' id='textbox1' name='inQuestion[]' class="form-control">
                </div>
                <div class="col-md-2">
                    <label>Answer</label><input type='text' id='textbox1' name='inAnswer[]' class="form-control">
                    <br>
                </div>

                <div class="col-md-3">
                    <label>A</label><input type='text' id='textbox1' name='inA[]' class="form-control">
                </div>
                <div class="col-md-3">
                    <label>B</label><input type='text' id='textbox1' name='inB[]' class="form-control">
                </div>
                <div class="col-md-3">
                    <label>C</label><input type='text' id='textbox1' name='inC[]' class="form-control">
                </div>
                <div class="col-md-3">
                    <label>D</label><input type='text' id='textbox1' name='inD[]' class="form-control">
                    <br><br>
                </div>
            </div>
        </div>

        <div class="col-md-12">
            <button type="submit" name="btnCreate"  class="btn btn-success pull-right">Create Quiz
        </div>
    </form>
</div>

4

3 に答える 3

1

私が理解したことから、データベースに複数の行を挿入しようとしています。

まず、[]HTML フォームで を使用する場合、 で配列として宣言する必要はありません。php

次に、各質問には質問名、回答、A、B、C、D があります。

HTML フォームを作成しようとすると、この形式を使用して question_id または番号を追跡できます。

<label>Question</label><input type='text' id='textbox1' name='inQuestion[1]' class="form-control">

次に、このアイテムを次のように取得できます$_POST['inQuestion'][1]

たとえば、テスト ページに 10 個の質問が必要な場合は、次のようにします。

<?php for($i = 0; $i <= 10; $i++) : ?>
<form method="post"> 

   <div class="col-md-10">
        <label>Question</label><input type='text' id='textbox1' name='inQuestion[<?=$i;?>]' class="form-control">
    </div>

    <div class="col-md-2">
        <label>Answer</label><input type='text' id='textbox1' name='inAnswer[<?=$i;?>]' class="form-control">
        <br>
    </div>


    <div class="col-md-3">
        <label>A</label><input type='text' id='textbox1' name='inA[<?=$i;?>]' class="form-control">
    </div>
    <div class="col-md-3">
        <label>B</label><input type='text' id='textbox1' name='inB[<?=$i;?>]' class="form-control">
    </div>
    <div class="col-md-3">
        <label>C</label><input type='text' id='textbox1' name='inC[<?=$i;?>]' class="form-control">
    </div>
    <div class="col-md-3">
        <label>D</label><input type='text' id='textbox1' name='inD[<?=$i;?>]' class="form-control">
        <br><br>
    </div>


    <input type="submit" value="go">

</form>

<?php endfor; ?>

また、回答A、B、C、Dのコンテンツをデータベースの列に配置しているのに、それらを配列に入れるのはなぜですか。これらの変数もクエリで使用してください。

$inA = $_POST['inA'];
$inB = $_POST['inB'];
$inC = $_POST['inC'];
$inD = $_POST['inD'];

最後に、値を挿入してみましょう。

if($_POST['btnCreate']){

    // The form has been posted!

    $inLesson = $_POST['inLesson'];
    $inQuizNo = $_POST['inQuizNo'];

    $questionsCount = count($_POST['inQuestion']);

    $items = array();

    // Since we should have the same size of arrays.
    // Also the empty validation has been handled before this step!
    for($i = 0; $i < $questionsCount; $i++){
            $temp = array();
        $temp['inQuestion']   = $_POST['inQuestion'][$i];
        $temp['inAnswer']     = $_POST['inAnswer'][$i];
        $temp['inA']          = $_POST['inA'][$i];
        $temp['inB']          = $_POST['inB'][$i];
        $temp['inC']          = $_POST['inC'][$i];
        $temp['inD']          = $_POST['inD'][$i];
            $items[] = $temp;
    }


    // Now items should have an array of all questions.

    foreach($items as $item){

        $SQL = 'INSERT INTO `test` (question, answer, A, B, C, D, lessonID, quizNo) VALUES (
                                                                                            "'.$item['inQuestion'].'",
                                                                                            "'.$item['inAnswer'].'",
                                                                                            "'.$item['inA'].'",
                                                                                            "'.$item['inB'].'",
                                                                                            "'.$item['inC'].'",
                                                                                            "'.$item['inD'].'",
                                                                                            "'.$inLesson.'",
                                                                                            "'.$inQuizNo.'")';

       $query = mysql_query( $SQL );
    } // End Foreach
}
于 2013-09-28T09:55:41.903 に答える
0

詳細な解決策を投稿するのではなく、複数の行を挿入していくつかのアイデアを得る方法を試してください

何かのようなもの:

$_POST['inQuestion'] = array(
  'q1','q2','q3' // from input array name 'inQuestion[]'
);

$_POST['inAnswer'] = array(
  'a1','a2','a3' // from input array name 'inAnswer[]'
);

$_POST['other'] = 'sunshine';

$_POST['yet_another'] = 'nice weather';

foreach($_POST['inQuestion'] as $k => $v){
$inserts[] = "(".$v.",".$_POST['inAnswer'][$k].",".$_POST['other'].",".$_POST['yet_another'].")";
}

echo "INSERT INTO table col_1, col_2, col_3, col_4 VALUES ".implode(',',$inserts)."";

// INSERT INTO table col_1, col_2, col_3, col_4 VALUES (q1,a1,sunshine,nice weather),(q2,a2,sunshine,nice weather),(q3,a3,sunshine,nice weather)
于 2013-09-28T10:16:57.047 に答える