PageRenderTime 43ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/Quản lý website thi trắc nghiệm qua mạng PHP/tracnghiem/inc/pages/statistics-resultid.inc.php

https://gitlab.com/phamngsinh/baitaplon_sinhvien
PHP | 148 lines | 147 code | 1 blank | 0 comment | 27 complexity | e5e01d6a4b6939b28d7e9f939767b170 MD5 | raw file
  1. <?php
  2. $g_vars['page']['location'] = array('reports_manager', 'test_statistics');
  3. $g_vars['page']['header'] = $lngstr['page_statistics_resultid']['header'];
  4. $g_vars['page']['selected_section'] = 'reportsmanager';
  5. $g_vars['page']['selected_tab'] = 'statistics-resultid';
  6. $g_vars['page']['menu_2_items'] = getMenu2Items($g_vars['page']['selected_section']);
  7. function writeResultStats($i_resultid) {
  8. global $g_db, $lngstr, $srv_settings, $g_vars;
  9. $g_vars['page']['resultid'] = $i_resultid;
  10. $i_testid = 0;
  11. $i_rSet6 = $g_db->SelectLimit("SELECT * FROM ".$srv_settings['table_prefix']."results WHERE resultid=".$i_resultid, 1);
  12. if(!$i_rSet6) {
  13. showDBError(__FILE__, 6);
  14. } else {
  15. if(!$i_rSet6->EOF) {
  16. $i_testid = $i_rSet6->fields['testid'];
  17. $g_vars['page']['result_date'] = getDateLocal($lngstr['language']['date_format_full'], $i_rSet6->fields['result_datestart']);
  18. $g_vars['page']['time_spent'] = getTimeFormatted($i_rSet6->fields['result_timespent']);
  19. $g_vars['page']['got_points'] = $i_rSet6->fields['result_points'];
  20. $g_vars['page']['points_max'] = $i_rSet6->fields['result_pointsmax'];
  21. $g_vars['page']['score'] = ($g_vars['page']['points_max'] != 0 ? round(($g_vars['page']['got_points'] * 100) / $g_vars['page']['points_max']) : 100);
  22. $g_vars['page']['grade'] = getGradeData($i_rSet6->fields['gscaleid'], $i_rSet6->fields['gscale_gradeid']);
  23. $i_userid = $i_rSet6->fields['userid'];
  24. $i_rSet7 = $g_db->SelectLimit("SELECT * FROM ".$srv_settings['table_prefix']."users WHERE userid=".$i_userid, 1);
  25. if(!$i_rSet7) {
  26. showDBError(__FILE__, 7);
  27. } else {
  28. if(!$i_rSet7->EOF) {
  29. $g_vars['page']['user_name'] = $i_rSet7->fields['user_firstname'].' '.$i_rSet7->fields['user_lastname'];
  30. }
  31. $i_rSet7->Close();
  32. }
  33. }
  34. $i_rSet6->Close();
  35. }
  36. $g_vars['page']['test_name'] = '';
  37. $i_gscaleid = 0;
  38. $i_rSet1 = $g_db->SelectLimit("SELECT * FROM ".$srv_settings['table_prefix']."tests WHERE testid=".$i_testid, 1);
  39. if(!$i_rSet1) {
  40. showDBError(__FILE__, 1);
  41. } else {
  42. if(!$i_rSet1->EOF) {
  43. $g_vars['page']['test_name'] = $i_rSet1->fields['test_name'];
  44. $i_gscaleid = $i_rSet1->fields['gscaleid'];
  45. }
  46. $i_rSet1->Close();
  47. }
  48. $g_vars['page']['grades_times_total'] = 0;
  49. $i_rSet2 = $g_db->Execute("SELECT * FROM ".$srv_settings['table_prefix']."gscales_grades WHERE gscaleid=".$i_gscaleid." ORDER BY gscale_gradeid");
  50. if(!$i_rSet2) {
  51. showDBError(__FILE__, 2);
  52. } else {
  53. while(!$i_rSet2->EOF) {
  54. $i_gradeid = $i_rSet2->fields['gscale_gradeid'];
  55. $g_vars['page']['grades'][$i_gradeid]['name'] = $i_rSet2->fields['grade_name'];
  56. $g_vars['page']['grades'][$i_gradeid]['times'] = getRecordCount($srv_settings['table_prefix'].'results', 'testid='.$i_testid.' AND gscaleid='.$i_gscaleid.' AND gscale_gradeid='.$i_gradeid);
  57. $g_vars['page']['grades_times_total'] += $g_vars['page']['grades'][$i_gradeid]['times'];
  58. $i_rSet2->MoveNext();
  59. }
  60. $i_rSet2->Close();
  61. }
  62. foreach($g_vars['page']['grades'] as $i_gradeid=>$i_grade) {
  63. $g_vars['page']['grades'][$i_gradeid]['times_percents'] = $g_vars['page']['grades_times_total'] !=0 ? ($g_vars['page']['grades'][$i_gradeid]['times'] * 100) / $g_vars['page']['grades_times_total'] : 0;
  64. }
  65. $g_vars['page']['test']['participant_count'] = 0;
  66. $i_points_all = array();
  67. $g_vars['page']['test']['points_max'] = 0;
  68. $g_vars['page']['test']['points_low'] = IGT_MAX_FLOAT;
  69. $g_vars['page']['test']['points_high'] = 0;
  70. $i_points_total = 0;
  71. $g_vars['page']['test']['points_total_max'] = 0;
  72. $i_rSet3 = $g_db->Execute("SELECT * FROM ".$srv_settings['table_prefix']."results WHERE testid=".$i_testid." AND gscale_gradeid > 0");
  73. if(!$i_rSet3) {
  74. showDBError(__FILE__, 3);
  75. } else {
  76. while(!$i_rSet3->EOF) {
  77. $g_vars['page']['test']['participant_count']++;
  78. $i_points = $i_rSet3->fields['result_points'];
  79. array_push($i_points_all, $i_points);
  80. $g_vars['page']['test']['points_max'] = $i_rSet3->fields['result_pointsmax'];
  81. if($i_points > $g_vars['page']['test']['points_high'])
  82. $g_vars['page']['test']['points_high'] = $i_points;
  83. if($i_points < $g_vars['page']['test']['points_low'])
  84. $g_vars['page']['test']['points_low'] = $i_points;
  85. $i_points_total += $i_points;
  86. $g_vars['page']['test']['points_total_max'] += $g_vars['page']['test']['points_max'];
  87. $i_rSet3->MoveNext();
  88. }
  89. $i_rSet3->Close();
  90. }
  91. $g_vars['page']['test']['points_average'] = ($i_points_total / $g_vars['page']['test']['participant_count']);
  92. $g_vars['page']['test']['points_average_percents'] = ($i_points_total * 100) / $g_vars['page']['test']['points_total_max'];
  93. $g_vars['page']['test']['points_high_percents'] = ($g_vars['page']['test']['points_high'] * 100) / $g_vars['page']['test']['points_max'];
  94. $g_vars['page']['test']['points_low_percents'] = ($g_vars['page']['test']['points_low'] * 100) / $g_vars['page']['test']['points_max'];
  95. $g_vars['page']['test']['variance'] = 0;
  96. if($g_vars['page']['test']['participant_count'] > 1) {
  97. foreach($i_points_all as $i_points)
  98. $g_vars['page']['test']['variance'] += ($i_points - $g_vars['page']['test']['points_average']) * ($i_points - $g_vars['page']['test']['points_average']);
  99. $g_vars['page']['test']['variance'] = $g_vars['page']['test']['variance'] / ($g_vars['page']['test']['participant_count'] - 1);
  100. }
  101. $g_vars['page']['test']['std_deviation'] = sqrt($g_vars['page']['test']['variance']);
  102. $g_vars['page']['questions'] = array();
  103. $i_rSet4 = $g_db->Execute("SELECT questionid, result_answer_iscorrect FROM ".$srv_settings['table_prefix']."results_answers WHERE resultid=".$i_resultid);
  104. if(!$i_rSet4) {
  105. showDBError(__FILE__, 4);
  106. } else {
  107. while(!$i_rSet4->EOF) {
  108. $i_questionid = $i_rSet4->fields['questionid'];
  109. $g_vars['page']['questions'][$i_questionid]['iscorrect'] = $i_rSet4->fields['result_answer_iscorrect'];
  110. $i_rSet4->MoveNext();
  111. }
  112. $i_rSet4->Close();
  113. }
  114. $g_vars['page']['subjects'] = array();
  115. foreach($g_vars['page']['questions'] as $i_questionid => $i_question) {
  116. $i_rSet5 = $g_db->SelectLimit("SELECT ".$srv_settings['table_prefix']."subjects.subjectid, ".$srv_settings['table_prefix']."subjects.subject_name FROM ".$srv_settings['table_prefix']."questions, ".$srv_settings['table_prefix']."subjects WHERE questionid=".$i_questionid." AND ".$srv_settings['table_prefix']."questions.subjectid=".$srv_settings['table_prefix']."subjects.subjectid", 1);
  117. if(!$i_rSet5) {
  118. showDBError(__FILE__, 5);
  119. } else {
  120. if(!$i_rSet5->EOF) {
  121. $i_subjectid = $i_rSet5->fields['subjectid'];
  122. $g_vars['page']['subjects'][$i_subjectid]['question_count'] = getRecordCount($srv_settings['table_prefix'].'questions', 'subjectid='.$i_subjectid);
  123. if(!isset($g_vars['page']['subjects'][$i_subjectid]['question_got'])) {
  124. $g_vars['page']['subjects'][$i_subjectid]['name'] = $i_rSet5->fields['subject_name'];
  125. $g_vars['page']['subjects'][$i_subjectid]['question_got'] = 0;
  126. $g_vars['page']['subjects'][$i_subjectid]['question_correct'] = 0;
  127. }
  128. $g_vars['page']['subjects'][$i_subjectid]['question_got']++;
  129. if($i_question['iscorrect'] == IGT_ANSWER_IS_CORRECT)
  130. $g_vars['page']['subjects'][$i_subjectid]['question_correct']++;
  131. }
  132. $i_rSet5->Close();
  133. }
  134. }
  135. foreach($g_vars['page']['subjects'] as $i_subjectid=>$i_grade) {
  136. $g_vars['page']['subjects'][$i_subjectid]['question_correct_percents'] = ($g_vars['page']['subjects'][$i_subjectid]['question_correct'] * 100) / $g_vars['page']['subjects'][$i_subjectid]['question_got'];
  137. }
  138. }
  139. $i_resultid = (int)readGetVar('resultid');
  140. writeResultStats((int)$i_resultid);
  141. $g_smarty->assign('g_vars', $g_vars);
  142. if(!empty($_GET['print'])) {
  143. displayTemplate('statistics-resultid-print');
  144. } else {
  145. displayTemplate('statistics-resultid');
  146. }
  147. ?>