2017-09-29 11 views
0

現在、各チェックボックスグループから単一のオプションを選択すると、配列にチェックボックス、ラジオ、テキストフィールドの配列を挿入しようとしています。 iは、異なるグループからの複数のオプションを選択するか、空のグループを去るときには挿入がごちゃ混ぜますup.Thatは、グループ4の値は、ここでグループ1 の行に挿入された自分のコードどのように入力フィールドの配列をmysqlに挿入するのですか

HTMLフォームで得ることができています。私は、異なるグループから複数のオプションを選択するか、空のグループを離れるとき

while($row2=$coursefetch1->fetch()){ 
    $iid = $row2['id']; 
    if($row2['type'] == 0){ 
     echo ' 

     <div class="tab-pane" id="'.$row2['id'].'"> 
     <div class="row" align="center"> 

     <b> '.$row2['question'].' </b><br> 
     <input type="hidden" id="question" name="question[]" value="'.$row2['question'].'"> 

     <input type="hidden" id="test_id" name="test_id[]" value="'.$row2['test_id'].'"> 
     <input type="checkbox" id="yanswer" name="yanswer1[]" value="a"><span> '.$row2['a'].' </span><br> 
     <input type="checkbox" id="yanswer" name="yanswer2[]" value="b"><span> '.$row2['b'].' </span><br> 
     <input type="checkbox" id="yanswer" name="yanswer3[]" value="c"><span> '.$row2['c'].' </span><br> 
     <input type="checkbox" id="yanswer" name="yanswer4[]" value="d"><span> '.$row2['d'].' </span><br> 


     </div> 
     </div> 

     '; 
    } 

    elseif($row2['type'] == 2){ 
     echo ' 

     <div class="tab-pane" id="'.$row2['id'].'"> 
     <div class="row" align="center"> 

     <b> '.$row2['question'].' </b><br> 
     <input type="hidden" id="question" name="question[]" value="'.$row2['question'].'"> 

     <input type="hidden" id="test_id" name="test_id[]" value="'.$row2['test_id'].'"> 
     <input type="radio" style="background-color:red;" id="yanswer" name="yanswer[]" value="a"><span> '.$row2['a'].' </span><br> 
     <input type="radio" style="background-color:red;" id="yanswer" name="yanswer[]" value="b"><span> '.$row2['b'].' </span><br> 
     <input type="radio" style="background-color:red;" id="yanswer" name="yanswer[]" value="c"><span> '.$row2['c'].' </span><br> 
     <input type="radio" id="yanswer" name="yanswer[]" value="d"><span> '.$row2['d'].' </span><br> 


     </div> 
     </div> 

     '; 
    } 

    elseif($row2['type'] == 1){ 

     echo ' 

     <div class="tab-pane" id="'.$row2['id'].'"> 
     <div class="row" align="center"> 

     <b> '.$row2['question'].' </b><br> 
     <input type="hidden" id="question" name="question[]" value="'.$row2['question'].'"> 

     <input type="hidden" id="test_id" name="test_id[]" value="'.$row2['test_id'].'"> 
     <input type="text" id="yanswer" name="yanswer1[]" value=""> 


     </div> 
     </div> 

     '; 
    } 

} 
?> 


PHP that processes the form 

    <?php 
    require "head.php"; 


    if (isset($_POST['submit'])) { 
     $question_array = $_POST['question']; 
     $testid_array = $_POST['test_id']; 
     $answer_array = $_POST['yanswer']; 
     $i = 0; 
    for($i = 0; $i < count($question_array); $i++) { 
     $question = $question_array[$i]; 
     $testid = $testid_array[$i]; 
     $answer = $answer_array[$i]; 

     $enterscore = $achilles->prepare("INSERT INTO `user_answer` (test_id,question,your_answer) 
     VALUES (:t,:q,:a)"); 

     $enterscore->bindparam(':t',$testid); 
     $enterscore->bindparam(':q',$question); 
     $enterscore->bindparam(':a',$answer); 
     $enterscore->execute(); 

     } 
    } 
+1

何が質問ですか? –

+1

IDはドキュメント内で一意である必要があります。 –

+0

エラーログを確認しましたか? – Neodan

答えて

0

しかし、挿入がアップごちゃ混ぜます。唯一の値が送信されチェックボックスをチェックしているため

。したがってチェックされていないものは配列にエントリを生成せず、フィールド名の末尾に[]のために配列インデックスが自動的に割り当てられるため、「文字化けした」データ構造になります。

先行配列要素のインデックスを指定しますなどname="foo[1]"、その方法をname="foo[0]"をあなたが答えた属する値を知っているように、あなたは、彼らの定義された「位置」にチェックイン、チェックボックスの値を取得します。誰かがすでにコメントで述べたように


は、IDの HTML文書中でユニークである必要があります - あなたが行くと同様にすることを修正する必要があります。最初にそれらのIDを必要とするかどうかに応じて、何らかのカウンタ値を含めるようにするか、特定の目的を果たさない場合は削除する必要があります。

+0

サンプルコードまたはエディションを提供してください。私はここにこだわっているので、本当に感謝しています。 – Achilles

+0

いいえ、自分で試してください。具体的に何が問題になっていますか? – CBroe

+0

インデックスに基づいてPOST値を処理する方法コードを正しくフォーマットするのが紛らわしい – Achilles

関連する問題