2011-07-03 235 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