创建Web表单以显示数据库中的问题

时间:2012-03-15 04:48:33

标签: php mysql html

P.S。我是php&的新手webform脚本;

目前我在MySQL数据库中有以下多项选择问题表:

     |MCQ_ID|Question|Opt_1|Opt_2|Opt_3|Opt_4|Opt_5|
     |1|What is the port|23|21|22|80|53

我的目标是在网络表单中创建一个测验,使用php脚本在哪里 (1)问题从数据库和数据库中选择。以多项选择形式显示,每个问题只有一个答案 (2)每个网络表格只应显示一个问题,因为会有一个计时器来记录特定问题的花费时间。

以下是我的开头脚本&我应该如何从这里实现上述目标?

 <!DOCTYPE html>
    <html>
        <head>
            <style type='text/css'>
                #wrapper {
                    width:950px;
                    height:auto;
                    padding: 13px;
                    margin-right: auto;
                    margin-left: auto;
                    background-color: #fff;
                }
            </style>
        </head>
        <body bgcolor="#e1e1e1">
            <div id="wrapper">
                <center><font fact="Andalus" size="5">Test Quiz</font></center>
                <br /><br /><br /><br />
            </div>

            <?php
                //Start Variables
                $username   =   "root";
                $password   =   "";
                $database   =   "Test";
                //End Variables

                //Connect To Database
                $link   =   mysql_connect(localhost,$username,$password) or die ('Could not connect :'.  mysql_error());
                mysql_select_db($database) or die( "Unable to select database");

                //SQL Get Questions
                $query  =   "SELECT * FROM MCQuestionBank";
                $result =   mysql_query($query) or die ('Query failed:'. mysql_error());
                $row    =   mysql_fetch_array($result,MYSQLI_ASSOC);

                //Get results
                /*
                while ($row = mysql_fetch_array($result,MYSQLI_ASSOC))
                    {
                        echo '<br> QuestionName : ' .$row{'Question'} ;
                        echo '<br> Option 1 : ' .$row{'MCQ_Opt1'};
                        echo '<br> Option 2 : ' .$row{'MCQ_Opt2'};
                        echo '<br> Option 3 : ' .$row{'MCQ_Opt3'};
                        echo '<br> Option 4 : ' .$row{'MCQ_Opt4'};
                        echo '<br> Option 5 : ' .$row{'MCQ_Opt5'};
                    }
                */
                mysql_free_result($result); 
                mysql_close($link);
            ?>
        </body>
</html>

3 个答案:

答案 0 :(得分:1)

该表结构将无法管理。如果您要使用数据库,则需要对其进行标准化。问题在一张表中。另一个答案。这种方式更加灵活。例如,当一个问题需要有更多(或少于)5个选择时,你打算做什么?

获取关系数据库的一般背景知识,然后再回到问题所在。这可能是一个好的开始:

http://www.deeptraining.com/litwin/dbdesign/FundamentalsOfRelationalDatabaseDesign.aspx

答案 1 :(得分:1)

  • 您可以使用单选按钮显示选项

www.echoecho.com/htmlforms10.htm

  • 您可以使用HTML表单将用户的答案提交回服务器。

www.w3schools.com/html/html_forms.asp

  • 除非您在数据库中存储了正确的答案,否则您必须手动更正答案。对于多项选择题,可以很容易地将正确答案存储在数据库中。还有一列表示正确的答案。

www.w3schools.com将是学习这些东西的良好起点。

答案 2 :(得分:1)

正确地执行此操作并非易事。您应该使用至少三个不同的表: 1.包含您的问题和唯一身份证的表格。 2.一个包含你的答案的表,他们去的问题的id,以及一个表明它是真还是假的布尔值。 3.一种跟踪用户答案的​​方法。这应该至少将会话ID和id存储到答案中。如果没有这个,你将无法正确地对每页进行一个问题(现在你将所有问题都转储到一个页面上)。 4.用户表几乎是非可选的,在上表中有一个唯一id的字段(而不是会话ID)。

如果您阅读JOIN查询,让这些表互相交流并不困难。

一旦你有一个好的数据库设置,你就可以看看php了。我们都已经开始以你的方式做到这一点,我们预见到你的未来会有很多头发。