分割ID's Up In Tables In While循环


Split ID's Up In Tables In While Loop

我有以下数据库表:

AWARD_ID   |  NOMINEE_ID   |  VOTER_ID  |  MULTI_CODE
------------------------------------------------------
5          | 3             |  1         |  9326
5          | 4             |  1         |  9326
5          | 5             |  3         |  8746

我需要在按MULTI_CODE分组的表中显示这些结果,例如:

所以它看起来像

<h1>Multi Code: 9326</h1>
<table>
<tr>
<td>Nominee: 3</td><td>Nominee: 4</td>
</tr>
</table>
<h1>Multi Code: 8746</h1>
<table>
<tr>
<td>Nominee: 5</td>
</tr>
</table>

这是目前为止我的SQL + PHP:

$nomineedetails = mysqli_query($con,"SELECT AWARD_ID, NOMINEE_ID, VOTER_ID, MULTI_CODE 
FROM b_awards_votes WHERE AWARD_ID = '5'");
$multi_code = -1;
while($row = mysqli_fetch_array($nomineedetails))
{
$awardID = $row['AWARD_ID'];
$nomineeID = $row['NOMINEE_ID'];
$voterID = $row['VOTER_ID'];
$multiCode = $row['MULTI_CODE'];
print "<h2>$multiCode</h2>";
if ($multi_code != $multiCode) {
print "<table><tr>";
$multi_code = $multiCode;
}
print "<td>Nominee: $nomineeID</td>";";
}
</tr></table>

用这个我得到这个:

 8746
 9326
 Nominee: 3
 9326
 Nominee: 4 Nominee: 5

为什么我在提名人3上面得到9326 ?

首先,我建议通过MULTI_CODE对结果进行排序,以便在循环结果时具有正确的排序。

然后,在循环中,无论标题是否与前一个不同,您始终打印带有多代码的标题。

请看一下这段代码。它没有经过测试,所以请注意其中可能有错误:

$nomineedetails = mysqli_query($con,"SELECT AWARD_ID, NOMINEE_ID, VOTER_ID, MULTI_CODE 
FROM b_awards_votes WHERE AWARD_ID = '5' ORDER BY MULTI_CODE ASC");
$multi_code = -1;
while($row = mysqli_fetch_array($nomineedetails))
{
    $awardID = $row['AWARD_ID'];
    $nomineeID = $row['NOMINEE_ID'];
    $voterID = $row['VOTER_ID'];
    $multiCode = $row['MULTI_CODE'];
    if ($multi_code != $multiCode) {
        if($multi_code !== -1) {
            print "</table>";
        }
        print "<h2>$multiCode</h2>";
        print "<table>";
        $multi_code = $multiCode;
    }
    print "<tr><td>Nominee: $nomineeID</td></tr>";
}