如果条件来自数据库

时间:2012-08-06 09:37:39

标签: php mysql

我从数据库获取$ final值并根据用户显示在表中。现在我有一个值,即这是我在前端展示的

Userid   Total   Letter
  36       45
  5        67
  78       90
  42       82
  12       57

后端代码

$sql = mysql_query('SELECT userid, total FROM history');
echo '<table><th>Userid</th>
             <th>Total</th>
             <th>Grade</th>
while($row = mysql_fetch_array($sql))
{
  echo '<tr><td>'.$row['userid'].'</td>  
            <td>'.$row['$total'].'</td> 
             $letter = mysql_query('SELECT score,letter FROM letter');               
             while($row = mysql_fetch_array($letter))
             {
               $score= $row['score'];
               $letterp= $row['letter']; 
               switch($row['$total']) 
              {
                case $row['$total'] == $score;
                echo '<td>'.$letterp.'</td>';
                break;
                case $row['$total'] >= $score;
                echo '<td>'.$letterp.'</td>';
                break;
              }                
        </tr>    
}
I have a letter table 
 ID  SCORE    letter
  1   100        A+
  2   90         A-
  3   80         B+
  4   73         B-
  5   65         C
  6   55         D
  7   45         E
  8   0          F

Switch case是我在这里写的一个例子。我需要给出条件,如果用户ID得分为45,那么我需要显示字母E,如果用户ID得分为67,那么我需要显示B-(b'coz得分字段定义65到54是B-)。这是确切的要求。

1 个答案:

答案 0 :(得分:1)

这样的事情应该做:

SELECT 
    CASE score 
        WHEN = 100 THEN 'A+'
        WHEN >= 90 and < 100 THEN 'A-' 
        WHEN >= 80 and < 89 THEN 'B+'
        WHEN >= 73 and < 80 THEN 'B-'
        // and so one...
        ELSE 'F' 
    END as myGrade,
    studentID
from 
    table1

编辑:对不起,我以为你是想在数据库中做这件事(如果我只是想要成绩而不是得分,我可能会这样做。以下是PHP代码:

$myScore=90; // for example

function getMyScore($myScore)
{
    if($myScore==100)
    {
        return 'A+';
    }
    elseif ($myScore >= 90 && $myScore <100)
    {
        return 'A-';
    }
    elseif ($myScore >= 80 && $myScore <90)
    {
        return 'B+';
    }
    // .....
    else
    {
        return 'F';
    }
}

$myGrade=getMyGrade($myScore);
echo $myGrade; // output: A-

基于我写的函数:

function getMyScore($myScore)
{
    if($myScore==100)
    {
        return 'A+';
    }
    elseif ($myScore >= 90 && $myScore <100)
    {
        return 'A-';
    }
    elseif ($myScore >= 80 && $myScore <90)
    {
        return 'B+';
    }
    // .....
    else
    {
        return 'F';
    }
}

while($row = mysql_fetch_array($sql))
{
    echo '<tr><td>'.$row['userid'].'</td><td>'.$row['$total'].'</td>';

    // In your code:
    $letter = mysql_query('SELECT score,letter FROM letter');  
    while($row = mysql_fetch_array($letter))
    {
        $score= $row['score'];
        echo '<td>'.getMyGrade($row['letter']).'</td>';
    }
    echo'</tr>';    
}