fetchArray()省略第一个结果

时间:2010-08-06 18:52:16

标签: php

我的php脚本上有以下代码:

$result = $conect->query("SELECT nome, classificacao 
        FROM ".$conecta->prefix('inscritos_resultados')." 
        WHERE classificacao >=1 AND classificacao <=50 
        ORDER BY classificacao");

$o_grupo = 0;
while ($usuarios = $conecta->fetchArray($result)) {
    if ($o_grupo == 0){
        echo "<tr class=\"even\"><th colspan=\"1\"> Classificação </th>
             <th colspan=\"2\"> Nome </th>";
        $o_grupo = 1;
    } else{
        echo "<tr class=\"odd\" onmouseout=\"this.className='odd';\"
             onmouseover=\"this.className='even';\"><th colspan='1'>
             <strong>".$usuarios["classificacao"]." </strong></th>
              <th colspan='2'> ".$usuarios["nome"]." </th>";
    }
}

为什么省略第一个结果?

1 个答案:

答案 0 :(得分:2)

因为您在else语句中回显数据。即使$ o_grup == 0你仍然想显示第一条记录,所以你不想要其他的。只需一个if:

while ($usuarios = $conecta->fetchArray($result)) {
    if ($o_grupo == 0){
        echo "<tr class=\"even\"><th colspan=\"1\"> Classificação </th><th colspan=\"2\"> Nome </th>";
        $o_grupo = 1;
    } 
    echo "<tr class=\"odd\" onmouseout=\"this.className='odd';\" onmouseover=\"this.className='even';\"><th colspan='1'><strong> ".$usuarios["classificacao"]." </strong></th><th colspan='2'> ".$usuarios["nome"]." </th>";
}

应该解决这个问题。

编辑

但是为什么即使在循环中也有这个呢?

echo "<tr class=\"even\"><th colspan=\"1\"> Classificação </th><th colspan=\"2\"> Nome </th>";
while ($usuarios = $conecta->fetchArray($result)) {
    echo "<tr class=\"odd\" onmouseout=\"this.className='odd';\" onmouseover=\"this.className='even';\"><th colspan='1'><strong> ".$usuarios["classificacao"]." </strong></th><th colspan='2'> ".$usuarios["nome"]." </th>";
}

也应该工作,而不需要循环中的if。