/** * 练习题统计 */ public function getPractiseStatistic($uid, $practiseId, $sectionId) { $tblUserPractise = new DB_Haodu_UserPractise(); $practiseUserNum = $tblUserPractise->queryCount("where section_id={$sectionId}"); $userPractise = $tblUserPractise->scalar("*", "where uid={$uid} and section_id={$sectionId}"); $tblPractiseAnswerHistory = new DB_Haodu_PractiseAnswerHistory(); $correctNum = $tblPractiseAnswerHistory->queryCount("where section_id={$sectionId} and practise_id={$practiseId} and option_id=answer_id and option_id!=0"); $userAnswer = $tblPractiseAnswerHistory->scalar("*", "where uid={$uid} and section_id={$sectionId} and practise_id={$practiseId}"); $wrong = $tblPractiseAnswerHistory->query("select count(1) as total, option_id from xdf_practise_answer_history where section_id={$sectionId} and practise_id={$practiseId} and option_id!=0 and option_id!=answer_id group by option_id order by total desc"); $wrong = $wrong->fetch_array(); $tblCoursePractise = new DB_Haodu_CoursePractise(); $sectionPractiseList = $tblCoursePractise->fetchAll("*", "where section_id={$sectionId}"); $sectionPractiseNum = count($sectionPractiseList); $word = "正确答案是%s, 您的答案是%s, 回答%s,作答用时%s.<br/>"; $word .= "本题共被作答%s次,正确率为%s%%,易错项为%s."; $word = sprintf($word, self::$no2letter[$userAnswer['answer_id']], self::$no2letter[$userAnswer['option_id']], $userAnswer['answer_id'] == $userAnswer['option_id'] && $userAnswer['option_id'] != 0 ? "正确" : "错误", sprintf("%02d", floor($userPractise['spend_time'] / 60)) . "分" . sprintf("%02d", $userPractise['spend_time'] % 60) . '秒', $practiseUserNum, round($correctNum * 100 / $practiseUserNum), self::$no2letter[(int) $wrong['option_id']]); $statistic = array("answer_id" => self::$no2letter[$userAnswer['answer_id']], "option_id" => self::$no2letter[$userAnswer['option_id']], "is_correct" => $userAnswer['answer_id'] == $userAnswer['option_id'] && $userAnswer['option_id'] != 0 ? 1 : 0, "spend_time" => $userPractise['spend_time'], "user_total" => $practiseUserNum, "correct_rate" => round($correctNum * 100 / $practiseUserNum) . "%", "correct_ratio" => "{$userPractise['correct_num']}/{$sectionPractiseNum}", "most_wrong" => self::$no2letter[(int) $wrong["option_id"]], "word" => $word); return $statistic; }