Php计算分数和奖励等级

时间:2017-06-08 15:33:35

标签: php mysql

只是想知道我的下面的PHP有什么问题,我试图插入两个表标记和结果。对于第一种类型的考试,我希望将它插入两个表格中。第二种类型的考试要插入标记,然后更新结果表,即取以前考试的分数并将分配等级加在一起。当我发布第一个标记时,它很顺利。现在第二个标志是有问题;标记表将成功插入但更新结果表会给出不同的结果,结果列将变为0或1,并且等级保持不变。任何人都可以在下面学习我的代码并告诉我哪里有问题或任何其他方式来做到这一点!我将不胜感激。谢谢。

<?php

    include('../database/dbcon.php');

        $tearcher_post_id = $_POST['tearcher_id'];
        $year_id = $_POST['year_id'];
        $term_id = $_POST['term_id'];
        $subject_post_code = $_POST['subject_code'];
        $student_no = $_POST['student_no'];
        $exam_id = $_POST['exam_id'];
        $class_id = $_POST['class_id'];
        $marks = $_POST['marks'];

        $grade = '';
        if($marks >=0 && $marks<= 19){
                $grade = 'E';
            }else if($marks > 19 && $marks <= 29){
                $grade = 'D-';
            }else if($marks > 29 && $marks <=34){
                $grade = 'D';
            }else if($marks > 34 && $marks <=39){
                $grade = 'D+';
            }else if($marks > 39 && $marks <=44){
                $grade = 'C-';
            }else if($marks > 44 && $marks <= 49){
                $grade = 'C';
            }else if($marks > 49 && $marks <= 54){
                $grade = 'C+';
            }else if($marks > 54 && $marks <= 59){
                $grade = 'B-';
            }else if($marks > 59 && $marks <= 64){
                $grade = 'B';
            }else if($marks > 64 && $marks <= 69){
                $grade = 'B+';
            }else if($marks > 69 && $marks <= 79){
                $grade = 'A-';
            }else if($marks > 79 && $marks <= 100){
                $grade = 'A';
            }

        $query_details = mysql_query(
        "SELECT staff.staff_id, students.student_id, subjects.subject_id  
        FROM staff, students, subjects 
        WHERE staff.id_number='$tearcher_post_id' 
        AND students.admission_no='$student_no' 
        AND subjects.subject_code='$subject_post_code'")or die(mysql_error());
        $row_details = mysql_fetch_array($query_details);
        $num_details = mysql_num_rows($query_details);

        if($num_details > 0){
            $staff_id= $row_details['staff_id'];
            $student_id= $row_details['student_id'];
            $subject_id= $row_details['subject_id'];

            $query_marks = mysql_query("SELECT * 
            FROM marks 
            WHERE student_id='$student_id'
            AND year_id='$year_id' 
            AND exam_type_id='$exam_id' 
            AND subject_id='$subject_id'")or die(mysql_error());
            $num_marks = mysql_num_rows($query_marks);

        if($num_marks > 0){
            echo 'marks_excist';

        }else{
            $query = mysql_query("INSERT 
            INTO marks 
            (student_id, 
            staff_id,
            term_id,
            year_id,
            exam_type_id,
            subject_id,
            class_id,
            marks)
            values(
            '$student_id', 
            '$staff_id',
            '$term_id',
            '$year_id',
            '$exam_id',
            '$subject_id',
            '$class_id',
            '$marks' )")or die(mysql_error());

            if($query){
                        $query_results = mysql_query("SELECT * 
                        FROM results 
                        WHERE student_id='$student_id' 
                        AND term_id='$term_id' 
                        AND year_id='$year_id' 
                        AND subject_id='$subject_id'")or die(mysql_error());
                        $row_results = mysql_fetch_array($query_results);
                        $num_results = mysql_num_rows($query_results);

                            if($num_results > 0){
                            $id= $row_results['result_id'];
                            $results = $row_results['results'];
                            $total = $results + $marks;
                            $grade = '';
                            if($total >=0 && $total<= 19){
                                    $grade = 'E';
                                }else if($total > 19 && $total <= 29){
                                    $grade = 'D-';
                                }else if($total > 29 && $total <=34){
                                    $grade = 'D';
                                }else if($total > 34 && $total <=39){
                                    $grade = 'D+';
                                }else if($total > 39 && $total <=44){
                                    $grade = 'C-';
                                }else if($total > 44 && $total <= 49){
                                    $grade = 'C';
                                }else if($total > 49 && $total <= 54){
                                    $grade = 'C+';
                                }else if($total > 54 && $total <= 59){
                                    $grade = 'B-';
                                }else if($total > 59 && $total <= 64){
                                    $grade = 'B';
                                }else if($total > 64 && $total <= 69){
                                    $grade = 'B+';
                                }else if($total > 69 && $total <= 79){
                                    $grade = 'A-';
                                }else if($total > 79 && $total <= 100){
                                    $grade = 'A';
                                }




                            mysql_query("UPDATE results 
                            SET results = '$total' AND grade = '$grade' 
                            WHERE result_id = '$id'") or die(mysql_error());
                            echo 'true_marks';
            }else{
                mysql_query("INSERT 
                INTO results 
                (student_id, 
                year_id,
                class_id,
                term_id,
                subject_id,
                results,
                grade)
               values(
               '$student_id', 
               '$year_id',
               '$class_id',
               '$term_id',
               '$subject_id',
               '$marks', 
               '$grade' )")or die(mysql_error());

            }


           }else{
               echo 'false_marks';
           }

         }  

        }else{
            echo 'details_dont_excist';
        }




?>

0 个答案:

没有答案