Adding columns to a table on MySQL and making the fields of these columns such that the user can input marks

40 Views Asked by At

I cloned an opensource project called opensis and I want to modify it to suit my use. In the table called student_report_card_grades i added the columns for CA marks and exam marks since this table enabled the user to either enter a grade for the student or the final percentage for a student in that subject. I have succeeded to create these fields but the function which i defined which is allow a user input CA marks and Exam marks is not working as I tested the software and I am unable to add CA marks and exam marks

I defined two functions makeCAMarks and _makeExamMarks function which is supposed to make the fields in such a way that the user input CA marks as well as exam marks but my function is not working as I am not able to input these marks. Here is a snippet of my code below

   $columns = array('FULL_NAME' =>_student,
 'STUDENT_ID' =>_studentId, 
 'CA_MARKS' => 'CA Marks',
 'EXAM_MARKS' => 'Exam Marks',
);

$columns += array(
    'CA_MARKS' => '_makeCAMarks',
    'EXAM_MARKS' => '_makeExamMarks',
);

if ($_REQUEST['include_inactive'] == 'Y')
    $columns += array('ACTIVE' =>_schoolStatus,
     'ACTIVE_SCHEDULE' =>_courseStatus,
    );
if ($_REQUEST['use_percents'] != 'true')
    $columns += array('GRADE_PERCENT' =>_percent,
     'REPORT_CARD_GRADE' =>_assignGrade,
    );
elseif ($not_graded)
    $columns += array('GRADE_PERCENT' =>_assignPercent,
);
else
    $columns += array('REPORT_CARD_GRADE' =>_grade,
     'GRADE_PERCENT' =>_assignPercent,
    );



if (substr($_REQUEST['mp'], 0, 1) != 'E' && GetMP($_REQUEST['mp'], 'DOES_COMMENTS') == 'Y') {
    foreach ($commentsA_RET as $value)
        $columns += array('CA' . $value['ID'] => $value['TITLE']);
    for ($i = 1; $i <= $max_current_commentsB; $i++)
        $columns += array('CB' . $i => 'Comment ' . $i);
    if (count($commentsB_select) && AllowEdit() && !isset($_REQUEST['_openSIS_PDF']))
        $columns += array('CB' . $i =>_addComment);
    $columns += array('COMMENT' =>_comment);
}


if(isset($_SESSION['GGG_FLAG']) && $_SESSION['GGG_FLAG'] == 1)
{
    foreach($stu_RET as $one_ret_key => $one_ret)
    {
        if(isset($import_RET[$one_ret['STUDENT_ID']][1]['GRADE_PERCENT']) && $import_RET[$one_ret['STUDENT_ID']][1]['GRADE_PERCENT'] != '')
        {
            $this_letter_grade = "<b>". _makeLetterGrade(($import_RET[$one_ret['STUDENT_ID']][1]['GRADE_PERCENT']/100)) ."</b>";
        }
        else
        {
            $this_letter_grade = "";
        }

        $stu_RET[$one_ret_key]['REPORT_CARD_GRADE'] = $this_letter_grade;
    }

    $_SESSION['GGG_FLAG'] = '';
    unset($_SESSION['GGG_FLAG']);
}


// echo "<pre>";print_r($stu_RET);echo "</pre>";

ListOutput($stu_RET, $columns,  _student, _students, false, false, array('yscroll' =>true));



if (count($stu_RET) != 0) {
    echo '<div class="panel-footer">' . SubmitButton(_save, 'submit[save]', 'class="btn btn-primary" onclick="self_disable(this);"') . '</div>';
}
echo "</FORM>";
echo '</div>'; //.panel-body
echo '</div>'; //.panel


function _makeGrade($value, $column) {
    global $THIS_RET, $current_RET, $import_RET, $grades_RET, $grades_select, $student_count, $tabindex;
    $tc_grade = 'n';
    if ($column == 'REPORT_CARD_GRADE') {

        if (!isset($_REQUEST['_openSIS_PDF'])) {
            $student_count++;
            $tabindex = $student_count;

            if ($import_RET[$THIS_RET['STUDENT_ID']]) {
                $select = $import_RET[$THIS_RET['STUDENT_ID']][1]['REPORT_CARD_GRADE_ID'];
                $extra_select = array($select => $grades_select[$import_RET[$THIS_RET['STUDENT_ID']][1]['REPORT_CARD_GRADE_ID']]);
                $div = false;
            } else {

                if ($current_RET[$THIS_RET['STUDENT_ID']][1]['GRADE_PERCENT'] != '') {

                    $select = _makeLetterGrade($current_RET[$THIS_RET['STUDENT_ID']][1]['GRADE_PERCENT'] / 100, "", User('STAFF_ID'), "%");
                }
                $rounding = DBGet(DBQuery('SELECT VALUE FROM program_user_config WHERE USER_ID=\'' . User('STAFF_ID') . '\' AND TITLE=\'ROUNDING\' AND PROGRAM=\'Gradebook\' AND VALUE LIKE \'%_' . UserCoursePeriod() . '\''));
                if (count($rounding))
                    $_SESSION['ROUNDING'] = rtrim($rounding[1]['VALUE'], '_' . UserCoursePeriod());
                else
                    $_SESSION['ROUNDING'] = '';

                if ($_SESSION['ROUNDING'] == 'UP')
                    $select = ceil($select);
                elseif ($_SESSION['ROUNDING'] == 'DOWN')
                    $select = floor($select);
                elseif ($_SESSION['ROUNDING'] == 'NORMAL')
                    $select = round($select);


                $dbf = DBGet(DBQuery('SELECT DOES_BREAKOFF,GRADE_SCALE_ID FROM course_periods WHERE COURSE_PERIOD_ID=\'' . UserCoursePeriod() . '\''));
                if ($dbf[1]['DOES_BREAKOFF'] == 'Y' && $select !== '') {

                    $get_details = DBGet(DBQuery('SELECT TITLE,VALUE FROM program_user_config WHERE USER_ID=\'' . User('STAFF_ID') . '\' AND PROGRAM=\'Gradebook\' AND VALUE LIKE \'%_' . UserCoursePeriod() . '\'  ORDER BY VALUE DESC '));
                    if (count($get_details)) {
                        $tgs_total = DBGet(DBQuery('SELECT COUNT(*) as RET_EX FROM program_user_config WHERE USER_ID=\'' . User('STAFF_ID') . '\' AND PROGRAM=\'Gradebook\' AND VALUE LIKE \'%_' . UserCoursePeriod() . '\''));
                        $tgs_total = $tgs_total[1]['RET_EX'];
                        $tgs_ac_total = DBGet(DBQuery('SELECT COUNT(*) as RET_EX FROM program_user_config WHERE USER_ID=\'' . User('STAFF_ID') . '\' AND PROGRAM=\'Gradebook\' AND VALUE LIKE \'%_' . UserCoursePeriod() . '\' AND VALUE IS NOT NULL'));
                        $tgs_ac_total = $tgs_ac_total[1]['RET_EX'];
                        if ($tgs_ac_total == $tgs_total) {
                            foreach ($get_details as $i => $d) {
                                $unused_var = explode('_', $d['VALUE']);
                                $unused_var2 = explode('-', $d['TITLE']);
                                if ($select >= $unused_var[0] && is_numeric($unused_var[0]) && $unused_var2[0] == UserCoursePeriod()) {
                                    $id = $i;
                                    break;
                                }
                            }

                            $grade_id = explode('-', $get_details[$id]['TITLE']);
                            $select = $grade_id[1];
                        } else
                            $select = '';
                        $tc_grade = 'y';
                    }
                }

                if ($tc_grade == 'n')
                    $select = $current_RET[$THIS_RET['STUDENT_ID']][1]['REPORT_CARD_GRADE_ID'];
                $extra_select = array();
                $div = true;
            }
            if ($_REQUEST['modfunc'] == 'clearall')
                $select = '';

            $return = SelectInput($select, 'values[' . $THIS_RET['STUDENT_ID'] . '][grade]', '', $extra_select + $grades_select, false, 'tabindex=' . $tabindex, $div);
        }
        else {
            if ($import_RET[$THIS_RET['STUDENT_ID']])
                $select = $import_RET[$THIS_RET['STUDENT_ID']][1]['REPORT_CARD_GRADE_ID'];
            else
                $select = $current_RET[$THIS_RET['STUDENT_ID']][1]['REPORT_CARD_GRADE_ID'];
            $return = '<b>' . $grades_RET[$select][1]['TITLE'] . '</b>';
        }
    }
    elseif ($column == 'GRADE_PERCENT') {
        if ($import_RET[$THIS_RET['STUDENT_ID']])
            $select = $import_RET[$THIS_RET['STUDENT_ID']][1]['GRADE_PERCENT'];
        else {
            $select = $current_RET[$THIS_RET['STUDENT_ID']][1]['GRADE_PERCENT'];
            $rounding = DBGet(DBQuery('SELECT VALUE FROM program_user_config WHERE USER_ID=\'' . User('STAFF_ID') . '\' AND TITLE=\'ROUNDING\' AND PROGRAM=\'Gradebook\' AND VALUE LIKE \'%_' . UserCoursePeriod() . '\''));
            if (count($rounding))
                $_SESSION['ROUNDING'] = rtrim($rounding[1]['VALUE'], '_' . UserCoursePeriod());
            else
                $_SESSION['ROUNDING'] = '';

            if ($_SESSION['ROUNDING'] == 'UP')
                $select = ceil($select);
            elseif ($_SESSION['ROUNDING'] == 'DOWN')
                $select = floor($select);
            elseif ($_SESSION['ROUNDING'] == 'NORMAL')
                $select = round($select);
            $return = $select == '' ? '' : ($select + 0) . '%';
        }
        if ($_REQUEST['modfunc'] == 'clearall')
            $return = '<input type="hidden" name="values[' . $THIS_RET[STUDENT_ID] . '][percent]" value="" />';
    }

    return $return;
}

function _makeCAMarks($value, $column) {
    // Text input for user to enter CA marks
    return TextInput($value, "values[{$THIS_RET['STUDENT_ID']}][ca_marks]", '$value', 'size=4');
}

function _makeExamMarks($value) {
    // Text input for user to enter exam marks
    return TextInput($value, "values[{$THIS_RET['STUDENT_ID']}][exam_marks]", '', 'size=4');
}

function _makePercent($value, $column) {
    global $THIS_RET, $current_RET, $grades_RET, $student_count, $tabindex, $import_RET;

    if ($column == 'GRADE_PERCENT') {
        if (!isset($_REQUEST['_openSIS_PDF'])) {
            $student_count++;
            $tabindex = $student_count;
            if ($import_RET[$THIS_RET['STUDENT_ID']])
                $return = TextInput($import_RET[$THIS_RET['STUDENT_ID']][1]['GRADE_PERCENT'] == '' ? '' : (_makeLetterGrade($import_RET[$THIS_RET['STUDENT_ID']][1]['GRADE_PERCENT'] / 100, "", User('STAFF_ID'), "%") + 0) . '%', "values[$THIS_RET[STUDENT_ID]][percent]", '', (0 ? 'readonly ' : '') . 'size=6 maxlength=6 tabindex=' . $tabindex, false);
            else
                $return = TextInput($current_RET[$THIS_RET['STUDENT_ID']][1]['GRADE_PERCENT'] == '' ? '' : (_makeLetterGrade($current_RET[$THIS_RET['STUDENT_ID']][1]['GRADE_PERCENT'] / 100, "", User('STAFF_ID'), "%") + 0) . '%', "values[$THIS_RET[STUDENT_ID]][percent]", '', (0 ? 'readonly ' : '') . 'size=6 maxlength=6 tabindex=' . $tabindex, !$current_RET[$THIS_RET['STUDENT_ID']][1]['DIV']);
        } else
            $return = $current_RET[$THIS_RET['STUDENT_ID']][1]['GRADE_PERCENT'] == '' ? '' : (_makeLetterGrade($current_RET[$THIS_RET['STUDENT_ID']][1]['GRADE_PERCENT'] / 100, "", User('STAFF_ID'), "%") + 0) . '%';
    }
    elseif ($column == 'REPORT_CARD_GRADE') {
        if ($current_RET[$THIS_RET['STUDENT_ID']][1]['REPORT_CARD_GRADE_ID'] == '' && $import_RET[$THIS_RET['STUDENT_ID']]) {
            $return = '<b>' . $grades_RET[$import_RET[$THIS_RET['STUDENT_ID']][1]['REPORT_CARD_GRADE_ID']][1]['TITLE'] . '</b>';
        } else
            $return = '<b>' . $grades_RET[$current_RET[$THIS_RET['STUDENT_ID']][1]['REPORT_CARD_GRADE_ID']][1]['TITLE'] . '</b>';
    }
    return $return;
}

0

There are 0 best solutions below