2011-09-30 90 views
0

我有这样的代码,从MySQL并将其输出作为一个阵列(多维)获取数据,像这样:PHP/MySQL的期多维/关联数组

$res = @mysqli_query($dbc, "SELECT id, subject, exam, marks, remarks FROM log WHERE student = '2222' AND term = 'Term2'"); 
$studentMarks = array(); 

while ($row = mysqli_fetch_array($res, MYSQLI_ASSOC)) 
{ 
    $studentMarks[$row['subject']][$row['exam']] = $row['marks']; 
} 



//So far the code displays $studentMarks like this: 
//$studentMarks = array(
// Maths => array('CAT1' => 50, 'CAT2' => 35) 
// , English => array('CAT1' => 20, 'MIDTERM' => 40) 
//); 

//I wish it to add remarks thus displaying $studentMarks like:(Not sure whether I am right) 
//$studentMarks = array(
// Maths => array('CAT1' => array(50, 
//   "Good" 
//   ), 
//  array('CAT2' => array(35, 
//   "Can do better" 
//   ) 
//) 
// , English => array('CAT1' => array(20, 
//   "Good" 
//   ), 
//  array('MIDTERM' => array(40, 
//   "Much better" 
//   ) 
//); 

echo '<table><thead><tr>'; 
echo '<td>Student</td><td>CAT1</td><td>CAT2</td><td>MIDTERM</td>'; 
echo '</tr></thead><tbody>'; 



foreach($studentMarks as $studentSub => $marks) 
{ 
    echo '<tr>'; 
    echo '<td>', $studentSub, '</td>'; 
    echo '<td>', (isset($marks['CAT1']) ? $marks['CAT1'] : '&nbsp;'), '</td>'; 
    echo '<td>', (isset($marks['CAT2']) ? $marks['CAT2'] : '&nbsp;'), '</td>'; 
    echo '<td>', (isset($marks['MIDTERM']) ? $marks['MIDTERM'] : '&nbsp;'), '</td>'; 
    echo '</tr>'; 
} 

echo '</tbody></table>'; 

// END CODE

我试图实现这一点:

SUBJECT CAT 1 | CAT 2 | MIDTERM | ENDTERM

MATH                            好   可以做的更好
ENGLISH                                    可以做的更好   做到更好

问题:

如何显示在/对每个标记的言论显示?

你的帮助是非常赞赏...

回答

0
$res = @mysqli_query($dbc, "SELECT id, subject, exam, marks, remarks FROM log WHERE student = '2222' AND term = 'Term2'"); 
$studentMarks = array(); 

while ($row = mysqli_fetch_array($res, MYSQLI_ASSOC)) 
{ 
    $studentMarks[$row['subject']][$row['exam']]['mark'] = $row['marks']; 

    //This will get the remarks from the database 
    $studentMarks[$row['subject']][$row['exam']]['remark'] = $row['remarks']; 

    //This should be used when you chose to compare marks and display appropriate remarks 
    //$studentMarks[$row['subject']][$row['exam']]['remark'] = ($row['marks'] < 40)?'can do better':($row['marks'] < 50)?'do better':'good'; 
} 


    echo '<table><thead><tr>'; 
    echo '<td>Student</td><td>CAT1</td><td>CAT2</td><td>MIDTERM</td>'; 
    echo '</tr></thead><tbody>'; 



    foreach($studentMarks as $studentSub => $marks) 
    { 
     echo '<tr>'; 
     echo '<td>', $studentSub, '</td>'; 
     echo '<td>', (isset($marks['CAT1']) ? $marks['CAT1']['mark'] : '&nbsp;'), '</td>'; 
     echo '<td>', (isset($marks['CAT2']) ? $marks['CAT2']['mark'] : '&nbsp;'), '</td>'; 
     echo '<td>', (isset($marks['MIDTERM']) ? $marks['MIDTERM']['mark'] : '&nbsp;'), '</td>'; 
     echo '</tr>'; 

     echo '<tr>'; 
     echo '<td> </td>'; 
     echo '<td>', (isset($marks['CAT1']) ? $marks['CAT1']['remark'] : '&nbsp;'), '</td>'; 
     echo '<td>', (isset($marks['CAT2']) ? $marks['CAT2']['remark'] : '&nbsp;'), '</td>'; 
     echo '<td>', (isset($marks['MIDTERM']) ? $marks['MIDTERM']['remark'] : '&nbsp;'), '</td>'; 
     echo '</tr>'; 
    } 

    echo '</tbody></table>'; 
+0

感谢mahadeb的回答,但我的意思是言论已经在数据库中。我如何从数据库中获取评论并针对标记进行展示? – Brian

+0

我设法解决了代码...我所做的只是删除评论比较,并用$ row ['remarks']代替它:$ studentMarks [$ row ['subject']] [$ row ['exam' ]] ['remark'] = $ row ['remarks']; 。非常感谢你mahadeb。我可以放心地说问题解决了。 – Brian