Donovan Posted March 12, 2008 Share Posted March 12, 2008 I am working on a grading app for the university I work for. So far this is what I have: After gathering the grade info I insert to a table $insertgrades = $db->sql_query("INSERT INTO ".$prefix."_tl_course_grades (Course_ID, SOMS_KEY, UID, Academic_Year, Irat_Avg, Grat_Avg, Appex_Avg) SELECT s.Course_ID, g.SOMS_KEY, g.UID, g.Academic_Year, AVG(IRAT_Grade) AS Irat_Avg, AVG(GRAT_Grade) AS Grat_Avg, AVG(Appex_Grade) AS Appex_Avg FROM ".$prefix."_tl_session_grades g JOIN ".$prefix."_tl_session s ON (g.Session_ID = s.Session_ID) JOIN ".$prefix."_tl_courses c ON (s.Course_ID = c.Course_ID) WHERE c.Course_ID = '$Course_ID' GROUP BY g.SOMS_KEY"); if (!$insertgrades) { echo("<p>Error performing query: " . mysql_error() . "</p>"); exit(); } I then compute another average of Appex and Grat and write that to GRAT_AppEx_Avg. I don't know if this is correct but it appears to be working. $updategroupavg = $db->sql_query("UPDATE ".$prefix."_tl_course_grades SET GRAT_AppEx_Avg = (SELECT AVG(Grat_Avg + Appex_Avg)/2 AS GRAT_AppEx_Avg)"); if (!$updategroupavg) { echo("<p>Error performing query: " . mysql_error() . "</p>"); exit(); } I then select the "weights" to assign for each part of the grade. Some parts are weighted more than others. 20%, 40% etc. $getweightinfo = $db->sql_query("SELECT * FROM ".$prefix."_tl_class_weights cw JOIN ".$prefix."_tl_weights w ON cw.weight_id = w.weight_id WHERE Class_Year = '$Course_Year'"); if (!$getweightinfo) { echo("<p>Error performing query: " . mysql_error() . "</p>"); exit(); } while($info = $db->sql_fetchrow($getweightinfo)) { $irat_wt = $info[irat_wt]; $grat_wt = $info[grat_wt]; $appex_wt = $info[appex_wt]; } Then I am trying to compute the Final grade and here is where I need some help. $processfinalgrade = $db->sql_query("SELECT * FROM ".$prefix."_tl_course_grades WHERE Course_ID = '$Course_ID'"); if (!$processfinalgrade) { echo("<p>Error performing query: " . mysql_error() . "</p>"); exit(); } while($row = $db->sql_fetchrow($processfinalgrade)) { $IRAT_Avg = $row[iRAT_Avg]; $GRAT_Avg = $row[GRAT_Avg]; $Appex_Avg = $row[Appex_Avg]; $Grade = (($IRAT_Avg * $irat_wt) + ($GRAT_Avg * $grat_wt) + ($Appex_Avg * $appex_wt)); } Update the table $updatefinalgrade = $db->sql_query("UPDATE ".$prefix."_tl_course_grades SET Final_Grade = '$Grade' WHERE Course_ID ='$Course_ID'"); which is not writing the correct Final grade. I get a repeating 67%. Any help is appreciated. Link to comment https://forums.phpfreaks.com/topic/95842-writing-calculations-back-to-table/ Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.