Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP问题与备选方案_Php - Fatal编程技术网

PHP问题与备选方案

PHP问题与备选方案,php,Php,我在PHP方面遇到了一个大问题,我需要你的帮助。我正在用PHP创建带有备选方案的问题。每个问题将有4个备选方案。问题将被插入一个名为“问题”的表中,所有备选方案将被插入另一个名为“备选方案”的表中。每个问题都有自己的id,甚至每个备选方案也有自己的id。但每组备选方案都会有问题id,以知道哪个备选方案属于哪个问题。然后我会选择它们作为单选按钮。 例如,如果我们有两个问题,比如 澳大利亚首都叫什么名字?(假设这个问题的id为nr 1) A) 悉尼 B) 新德里 C) 堪培拉 D) 迈米 上述所有备

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

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

  • 什么是89+(3*9)(假设这个问题的id为nr3)
    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>
    
    if(设置($请求['submit'])和&$请求['submit']!=“”){
    $questions=$_POST['questions'];
    $Alternations=$_POST['Alternations'];
    如果(isset($\u POST['questions'])和&$\u POST['questions']!='')
    {
    foreach($q形式的问题){
    如果($q!=''){
    $sql1=“插入问题(问题)”。
    “值(‘“$q.”);”;
    if(!db_query($sql1))
    $errors['err']=“无法创建问题”;
    $question_id[]=mysql_insert_id();
    }
    }
    foreach($question\u id AS$q\u id){//我想这就是问题所在,但我不知道如何解决
    foreach($alt形式的备选方案){
    如果($alt!=''){
    $sql=“插入备选方案(备选方案,问题编号)”。
    “值(“$alt.”、“$q_id.”);”;
    如果(!db_query($sql))
    $errors['err']=“无法创建备选方案”;
    }
    }
    }
    }
    }
    


    对于($i=1;$i

    备选方案:


    for($j=1;$j
    foreach($q\u id为$q\u id)
    迭代您的问题列表

    在这个循环中,
    foreach($alt作为可选项)
    迭代您的答案列表。因此,您将浏览整个答案列表,每个问题一次

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

    foreach($question\u id作为$q\u id)
    迭代您的问题列表

    在这个循环中,
    foreach($alt作为可选项)
    迭代您的答案列表。因此,您将浏览整个答案列表,每个问题一次


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

    为什么不将问题编号添加到问题列表中作为键的输入的名称:

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

    为什么不将问题编号作为键添加到输入的名称中:

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

    注意SQL注入…尝试。注意SQL注入…尝试。谢谢Octern,我按照您的建议做了,“一次一个问题”。很高兴它起到了作用!如果您认为这是一个有用的答案,您也可以将其向上投票(单击答案旁边的向上箭头)或将其标记为“已接受”答案(单击箭头下的复选标记)。这不是必需的,但它会让其他stackoverflow用户更有可能回答您提出的任何其他问题。我回答了,但现在我面临另一个问题,但与第一个问题类似,我已将其发送到网上,希望您也能在这个问题上给我一些提示。谢谢!谢谢Octern,我按照您的建议做了,“一次只问一个问题”。很高兴它起到了作用!如果您认为这是一个有用的答案,您也可以将其向上投票(单击答案旁边的向上箭头)或将其标记为“已接受”答案(单击箭头下的复选标记)。这不是必需的,但它会使其他stackoverflow用户更有可能回答您提出的任何其他问题。我回答了,但现在我面临另一个问题,但与第一个问题类似,我已将其发送到网上,希望您也能在这个问题上给我一些提示。谢谢!感谢Borgtex的帮助,对我来说,这种方式非常困难ult和我通过每次插入一个问题来完成。再次感谢你Borgtex的帮助,对我来说,这种方式非常困难,我通过每次插入一个问题来完成。再次感谢你