0

私はここでPHPに関して大きな問題に直面しており、あなたの助けが必要です。私は別の方法でPHPで質問を作成しています。各質問には4つの選択肢があります。質問は質問と呼ばれるテーブルに挿入され、すべての選択肢は選択肢と呼ばれる別のテーブルに挿入されます。すべての質問には独自のIDがあり、すべての選択肢にも独自のIDがあります。しかし、選択肢のすべてのグループには質問IDもあり、どの選択肢がどの質問に属しているかを知ることができます。次に、それらをラジオボタンとして選択します。たとえば、次のような2つの質問がある場合

  1. オーストラリアの首都の名前は何ですか?(この質問のIDが1であるとしましょう)
    A)シドニー
    B)ニューデリー
    C)キャンベラ
    D)マイミ
    そして上記のすべての選択肢には独自のIDがあり、この場合の質問IDは1です。


  2. 89 +(3 * 9)とは何ですか(この質問のIDが3) A)116
    B)117
    C)115
    D)112であるとしましょう

そして、上記のすべての選択肢には独自のIDがあり、この場合の質問IDは3です。

3.高さ100mの塔の頂上から物を落とします。t秒後の地上の高さは100-4.9t2mです。ドロップしてから2秒後に失敗する速度はどれくらいですか?
A)98m
B)78m
C)56m
D)どれも
.....

これが私のコードです:

if (isset($_REQUEST['submit']) && $_REQUEST['submit'] != "") {
    $questions = $_POST['questions']; 

    $alternatives = $_POST['alternatives']; 


    if(isset($_POST['questions']) && $_POST['questions'] != '')
    {

        foreach($questions as $q) {

            if($q !='') {

                $sql1 = " INSERT INTO questions (question) ".
                        " VALUES ('".$q."'); ";
                if (!db_query($sql1)) 
                    $errors['err']='Unable to create question';
                $question_id[] = mysql_insert_id(); 
            }

        }

        foreach($question_id AS $q_id) { // I think here is the problem but I don't know how to solv'

            foreach($alternatives as $alt){


                if($alt !=''){
                    $sql =  " INSERT INTO alternatives (alternative, question_id) ".
                                " VALUES ('".$alt."', ".$q_id."); ";
                                if (!db_query($sql))
                    $errors['err']='Unable to create alternatives';
                 }

            }

        }

    }

}




<form action="test.php" method="POST" enctype="multipart/form-data"><br /><br /><br />
for($i=1; $i<=10; ++$i){
$i.") "?><input type="text" name="questions[]" value="" size="100"/><br />
<br /><p>Alternatives:</p><br /> 
for($j=1; $j<=4; ++$j){
<input type="text" name="alternatives[]" value="" /><br /> } }
<input type="submit" name="submit" value="Send"></input>
 <input class="button" type="reset" value="Reset" />

</form>

私のコードでごめんなさい..ここに書くのはとても難しかったです。しかし、何が起こっているのか:

12の選択肢すべてが3回挿入され、そのたびにすべて同じquestion_idが取得されます。つまり、最初の12個の選択肢はquestion_id 1を取得し、次にそれらの12個の選択肢が再度挿入されてquestion_id = 2を取得し、以下同様に続きます。最初の4つの選択肢はquestion_id 1を取得し、2番目の質問の選択肢はquestion_idnr2などがあります。どうやって解決したらいいのかわからない。

4

2 に答える 2

3

入力の名前にキーとして質問番号を追加してみませんか。

<form action="test.php" method="POST" enctype="multipart/form-data"><br /><br /><br />
<?php 
for($i=1; $i<=10; ++$i){?>
<input type="text" name="questions[<?php echo $i;?>]" value="" size="100"/><br />
<br /><p>Alternatives:</p><br /> 
<?php for($j=1; $j<=4; ++$j){?>
<input type="text" name="alternatives[<?php echo $i;?>][]" value="" /><br />
<?php } } ?>
<input type="submit" name="submit" value="Send"></input>
 <input class="button" type="reset" value="Reset" />

</form>

そうすれば、次のような2つの非常にループしやすい配列で終わります。

  ["questions"]=>
  array(10) {
    [1]=>
    string(4) "What's the name of Australian capital city?"
    [2]=> ....

  ["alternatives"]=>
  array(10) {
    [1]=>
    array(4) {
      [0]=>
      string(6) "Sidney"
      [1]=>
      string(4) " New Delhi"
      [2]=>
      string(4) " Canberra"
      [3]=>
      string(2) "Maimi"
    }
    [2]=>
    array(4) {... and so on
于 2012-07-15T01:21:55.160 に答える
0

foreach($question_id AS $q_id)質問のリストを繰り返します。

そのループ内でforeach($alternatives as $alt)、回答のリストを繰り返します。したがって、質問ごとに1回ずつ、回答のリスト全体を調べます。

代わりに、各回答を、それが適用される質問だけに関連付ける必要があります。最も簡単な方法は、おそらく一度に1つの質問を挿入することです。それを行うには他にもさまざまな方法がありますが、これらを送信するために使用しているインターフェースを見ずに何が機能するかを言うのは難しいです。

于 2012-07-15T00:53:00.913 に答える