2011-07-03 242 views
-2

我有一点小问题。以PHP计算平均值

我有虚拟实验室,一名学生将完成一项有5个问题的调查,每个成本为2分。糟糕的选择-2点,不错的选择+2点。因此,最后,当学生按“显示结果”时,我希望该脚本从表格“用户”更新“媒体”字段并更新表格“实验室”中的“nota”字段。 该学生将获得更多结果,但如果他有结果4,平均值必须是4,而不考虑其他结果。 我附加了一个PHP脚本,它不起作用,它没有计算出我想要的平均值。

http://pastebin.com/S55C7nYQ

PS:媒体意味着平均,诺塔意义的结果或笔记,SUMA之意,音符nr_note含义编号。

或一个例子:

我有:

如果我执行 选择如果( 'NOTA' < = 4,4,AVG( 'NOTA' ))作为来自实验室的medie,其中'student'='[email protected]'
它显示4是错误的,我在笔记中没有4。这里有什么问题?

如果我有一个4,平均回报4,在这里很好。

“诺塔”为int(2)

+1

“这是行不通的,它没有计算出我想要的平均水平。” ***它计算的是什么?结果是什么?有没有错误? – 2011-07-03 15:25:54

+2

这听起来很有家庭气氛。 – Orbling

+0

@Orbling:不,它不是作业@KEoki:我想计算平均值并更新表格“users”中的'media'字段......但是我的脚本计算错误的平均值,但我不知道为什么 – Teodorescu

回答

1

它看起来像你可能有一个问题得到正确的平均值,因为所有所有的测试结果都集中在一起(每用户)?换句话说,如果学生多次参加测试,表格不会单独存储每个测试,它只会将结果添加到相同用户的总分中。

所以,也许解决的办法是在表中添加另一个字段,该字段具有用于特定测试的唯一编号,然后在每次开始学生时,您都必须在测试开始时生成此编号。如果您的测试在多个页面上,则需要将页面中的变量传递给页面或设置cookie。

0

你可以用下面的逻辑

$sum = 0; 
$size = 0; 

if (answer == 1) // answer is correct 
    { 
    $sum += 2; 
    $size ++; 
    } 
else 
    { 
    $sum -= 2; 
    $size ++; 
    } 

$average = $sum/$size; // be sure to check size is not equal to 0 
+0

我不我想从笔记中直接计算平均值,如果1笔记<= 4,则平均值为4,而不考虑其他笔记。 – Teodorescu

+0

如果字段数量不固定,您可以将foreach添加到Answers。 如果Average不等于或小于4,则使其为4.并更新表。 如果你可以上传脚本我可以帮你更好 – Shreyas

+0

我修改了正文。遵循SQL查询中的IF子句的例子...它不工作... – Teodorescu