PHP问题与备选方案


PHP Questions with alternatives

我在PHP方面遇到了一个大问题,我需要你的帮助。我正在用PHP创建问题和备选方案。每个问题将有4个备选方案。问题将被插入一个称为问题的表中,所有备选方案将被插入另一个名为备选方案的表中。每一个问题都有自己的本我,甚至每一个备选方案也会有自己的本我。但每一组备选方案都会有问题id,以知道哪个备选方案属于哪个问题。然后我会选择它们作为单选按钮。例如,如果我们有两个问题,比如

  1. 澳大利亚首都叫什么名字?(假设这个问题的id为1)
    A) 西德尼
    B) 新德里
    C) 堪培拉
    D) Maimi
    上面的所有备选方案都有自己的id,在这种情况下,问题id为1

  2. 什么是89+(3*9)(假设这个问题有id nr 3)
    A) 116
    B) 117
    C) 115
    D) 112

上面所有的备选方案都有自己的id,在这种情况下,问题id为3

3.一个物体从100米高的塔顶坠落。t秒后,它的地面高度为100-4.9t2米。它坠落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个备选方案都被插入三次,每次都得到相同的question_id。我的意思是,前12个备选方案得到question_id 1,然后再次插入这12个备选项目,它们得到question_id=2,依此类推……我想要的是前四个备选方案获得question_id1,第二个问题的备选方案将有question_idnr 2,依此依此类推。我不知道如何解决它。

为什么不在输入名称中添加问题编号作为关键字:

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

这样你就可以得到两个非常容易循环的数组,比如

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

foreach($question_id AS $q_id)迭代您的问题列表。

在这个循环中,foreach($alternatives as $alt)迭代您的答案列表。因此,你要浏览整个答案列表,每个问题一次。

相反,你需要将每个答案与它所适用的问题联系起来。最简单的方法可能是一次插入一个问题。有很多其他方法可以做到这一点,但很难说如果没有看到你用来提交这些内容的界面,什么会起作用。