2013-12-11 46 views
0

我试图找到插入到表中的一组等级的GPA,等级的列是varchar类型,我需要循环,然后转换那些到小数,我很失落,现在不知道如何去做这件事。任何帮助,将不胜感激通过mysql循环通过php查找字母等级的平均值

继承人什么我到目前为止,我不断收到错误:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <title>Display GPA</title> 
    </head> 
    <body> 
<?php 

$host="XXXX"; 
$username="XXXX"; // Mysql username 
$password="XXX"; // Mysql password 
$db_name="XXXX"; // Database name 
$tbl_name="gpa"; // Table name 

// Connect to server and select databse. 
$con=mysqli_connect("$host", "$username", "$password")or die("cannot connect"); 
mysqli_select_db($con,"bparis") or die ("no database"); 

if(mysqli_connect_errno()) 
$con = false; 

if(!$con) { 
    echo "Failed to connect to database server!"; 

} 

else { 




    $result = mysqli_query($con,"SELECT grade FROM gpa"); 
while ($row = mysql_fetch_array($result, MYSQL_NUM)) { 
    if($grade == 'A') { 
     $numberGrade = 4; 
    } elseif ($grade == 'A-') { 
     $numberGrade = 3.67; 
    } elseif ($grade == 'B+') { 
     $numberGrade = 3.33;  
} elseif ($grade == 'B') { 
    $numberGrade = 3;  
} elseif ($grade == 'B-') { 
    $numberGrade = 2.67; 
} elseif ($grade == 'C+') { 
    $numberGrade = 2.33;                      
} elseif ($grade == 'C') { 
    $numberGrade = 2; 
} elseif ($grade == 'C-') { 
    $numberGrade = 1.67;                     
} elseif ($grade == 'D') { 
    $numberGrade = 1;                   
} else { 
    $numberGrade = 0;                   
} 
$totalGrade = ($totalGrade + $numberGrade)/$i; 
array_pop($array); 
} 
$totalGrade; 

    echo "  <h1>Your Grades and GPA Calculator</h1> 
    <hr /> 
    <p /> 
    <table border='1'> 
     <tr> 
      <th></th> 
      <th>Course Heading</th> 
      <th>Course Number</th> 
      <th>Credit Hours</th> 
      <th>Grade</th> 
     </tr>\r\n"; 
     $result = mysqli_query($con, "SELECT * FROM gpa"); 
    while($row = mysqli_fetch_array($result)) { 
     echo "   <tr>\r\n"; 
     echo "    <td>" . $row['id'] . "</td>\r\n"; 
     echo "    <td>" . $row['heading'] . "</td>\r\n"; 
     echo "    <td>" . $row['courseNUM'] . "</td>\r\n"; 
     echo "    <td>" . $row['creditHours'] . "</td>\r\n"; 
     echo "    <td>" . $row['grade'] . "</td>\r\n"; 
     echo "   </tr>\r\n"; 
    } 
    echo "  </table>\r\n"; 
    echo "<p />Your overall GPA:" .$totalGrade; 
} 
mysqli_close($con); 

?> 


</body>  

+3

你有没有尝试过任何代码?如果你尝试,我们可以帮助你,但如果我们为你做你的工作,我们通常会皱眉。 –

+0

刚刚添加了它的形式 – user3062910

回答

4

你并不真的需要用PHP来做到这一点。 SQL非常有能力做到这一点

SELECT AVG(
    CASE gpa 
     WHEN 'A' THEN 4 
     WHEN 'A-' THEN 3.67 
     WHEN 'B+' THEN 3.33 
-- .... and so on 
     ELSE 0 
    END 
    ) AS avg_gpa 
FROM table 
+0

我需要在PHP表单中显示它 – user3062910