2012-11-15 99 views
0

我已经把测验连同jQuiz:http://www.fatihacet.com/lab/jQuiz/通测试得分结果MySQL查询

如果你参加考试,你会看到它显示你的分数在的90/100格式结束(只有它有四个问题)。

如何将用户得到的分数传递给变量,然后执行sql和IF语句?

在jQuiz.js

文件,它在底部下面的代码:

$('.btnShowResult').click(function(){ 
      $('#progress').width(300); 
      $('#progressKeeper').hide(); 
      var results = jQuiz.checkAnswers(); 
      var resultSet = ''; 
      var trueCount = 0; 
      for (var i = 0, ii = results.length; i < ii; i++){ 
       if (results[i] == true) trueCount++; 
       resultSet += '<div> Question ' + (i + 1) + ' is ' + results[i] + '</div>' 
      } 
      resultSet += '<div class="totalScore">Your total score is ' + trueCount * 20 + '/100</div>' 
      $('#resultKeeper').html(resultSet).show(); 
     }) 

我试图

$Count = var results; 

if($Count >= "90") 
{ 
    $award = $db->exec("UPDATE users SET test='passed' WHERE username='$username'"); 
} 

我觉得我有个好主意,但我只是失去了一些东西至关重要,因为它没有工作或做任何事情。感谢您的任何指导或帮助您可以给我。

+0

看着这个,难道你不会做'$ Count = trueCount * 20'吗?因为这似乎是实际给出的总分,而不是'results' –

+2

,所以我必须做的所有事情都是通过一个测试,假的是一个ajax请求,并将计数= 91传递给服务器? –

回答

1

你从错误的角度来看这件事。

  1. 如果有人假设他们是技术型的,那么很容易假冒他人的测验。他们所需要做的就是启动浏览器的开发者工具并编辑页面上的数据。你最好使用不依赖于来自客户端的数据的信任。当然,这可能只是一个轻率的测验,用户通过与否并不重要。
  2. 当PHP运行在服务器上时,JavaScript在客户端上运行。他们不能以这种方式分享变量。您需要以某种方式将分数发送到服务器。 This question可能是一个很好的开始。

请确保$ username来自您信任的来源(即不是客户端)。否则,你需要担心SQL注入。即使你信任它,你也需要确保它不包含撇号。你真的应该使用prepared statements/parameterised queries