只是想知道我的下面的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';
}
?>