2012-03-15 89 views
0

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 

我的目标是创建一个web形式的测验,使用其中 (1)的问题是从选定的PHP脚本数据库&以多选形式显示,每个问题只有一个答案 (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> 
+0

如果问题需要6个以上的选项,会发生什么情况? – 2012-03-15 04:52:47

+0

我保持在5个选项这个选择题的选择。 – Derek 2012-03-15 04:57:03

+0

PHP脚本部分如何?这对我来说似乎很困惑,有什么指导? – Derek 2012-03-15 05:06:55

回答

1

该表结构将难以管理。如果您要使用数据库,则需要对其进行规格化。问题放在一张桌子上。在另一个答案。这样更灵活。例如,当一个问题需要更多(或少于)5个选择时,你将要做什么?

获取有关关系数据库的一般背景信息,然后回到问题中。这可能是一个良好的开端:

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

+0

PHP脚本部分如何?这对我来说似乎很困惑,有什么指导? – Derek 2012-03-15 05:07:23

+0

如果你想编写PHP,你需要学习PHP。你有没有得到一本关于PHP的初学书籍?如果您有具体问题,请从此处开始并返回。如果你不想去那个努力,你可能会更好地得到一个现成的测验创建者(有数百个)。 – 2012-03-15 05:16:29

1
  • 您可以使用单选按钮来显示你的选择

www.echoecho.com/htmlforms10.htm

  • 您可以使用HTML表单通过提交答案用户回到服务器。

www.w3schools.com/html/html_forms.asp

  • 除非你存储在数据库中的正确答案,你必须手动正确的答案。对于多项选择题,在数据库中存储正确答案非常容易。再有一列表示正确的答案。

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

+0

关于答案的纠正,如果我:(1)将答案存储在数据库中的表中并使用PHP脚本比较答案(如果有办法做到这一点)?我可能会随机分配问题的顺序。它一直在延伸我的大脑细胞一段时间。 – Derek 2012-03-15 05:00:32

+0

可以在数据库中存储正确的答案,并使用PHP进行比较,因为我已经提到过您必须阅读有关HTML表单的信息,并参阅此页http://www.w3schools.com/php/php_post.asp ,这些页面中的简单示例将帮助您了解如何完成这些工作。还有,你可以随机化订单,在PHP中有一个rand()函数,你可以使用它。 – 2012-03-15 05:10:43

1

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

如果您阅读JOIN查询,使这些表彼此交谈并不困难。

一旦你有一个好的数据库设置,你已经准备好看看PHP。我们都已经开始按照自己的方式开展工作,我们预见将来会有很多头发。