将数据库列与变量进行比较时出现意外输出

0 php

我有代码从MySQL数据库中检索有关玩家的信息.如果排名发生变化,我想在HTML输出中应用特殊情况.我希望它看起来像这样:http://i27.tinypic.com/f406tz.png

但我不能让它像我想要的那样,而是在每一行打印排名:

$old_rank = '';
while ($g = mysql_fetch_object($q)) {

if ($g->rankname != $old_rank) {
    echo "<tr><td>$g->rankname</td>\n";
    $old_rank = "<tr><td>&nbsp;</td>\n";
}

echo " <td>$g->name</td></tr>\n";

}
Run Code Online (Sandbox Code Playgroud)

我想要的是:

<tr>
<td>One</td>
<td>Kraven the Hunter</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>Kull the Conqueror</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>Zazi The Beast</td>
</tr>

<tr>
<td>Vice-leader</td>
<td>Igos du Ikana</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>Saint Sinner</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>Midvalley the Hornfreak</td>
</tr>.......................
Run Code Online (Sandbox Code Playgroud)

我得到了什么:

<tr><td>One</td>
<td>Tester</td></tr>
<tr><td>One</td>
<td>Kraven the Hunter</td></tr>
<tr><td>One</td>

<td>Kull the Conqueror</td></tr>
<tr><td>One</td>
<td>Zazi The Beast</td></tr>
<tr><td>Vice-Leader</td>
<td>Midvalley the Hornfreak</td></tr>
<tr><td>Vice-Leader</td>
<td>Saint Sinner

</td></tr>
<tr><td>Vice-Leader</td>
<td>Igos du Ikana</td></tr>
Run Code Online (Sandbox Code Playgroud)

Jer*_*ten 6

$old_rank永远不会等同于$g->rankname因为你设置的方式$old_rank,它将包含HTML标签,$g->rankname你从数据库中获得的标签永远不会有HTML标签.

尝试将if语句更改为以下内容:

if ($g->rankname != $old_rank) {
    echo "<tr><td>$g->rankname</td>\n";
    $old_rank = $g->rankname;
} else {
    echo "<tr><td>&nbsp;</td>\n";
}
Run Code Online (Sandbox Code Playgroud)

它打印军衔名称,如果它是一个新的等级名称,否则它打印空白.