将查询中的第一项设置为与其余项不同

时间:2009-09-19 21:37:40

标签: php mysql

想知道你是否可以帮我解决一个php /查询问题。

我想将第一行的格式与其他行格式不同(总是返回20行)。

我的查询现在看起来像这样:

<?php
$nt=array();
$query="SELECT * FROM  table WHERE field=item ORDER BY date DESC LIMIT 20";
$rt=mysql_query($query);
echo mysql_error();

while($nt=mysql_fetch_array($rt)){              
echo "<p class='columnitem'><a href='/item/".$nt[id]."'>".$nt[Title]."</a></p>";
}
?>

显然格式化所有行相同,请帮忙!

3 个答案:

答案 0 :(得分:2)

最简单的解决方案通常效果最好:

$row=1;
while($nt=mysql_fetch_array($rt)){                              
if($row==1){
    echo "<p class='firstrow'><a href='/item/".$nt[id]."'>".$nt[Title]."</a></p>";
} else {
    echo "<p class='columnitem'><a href='/item/".$nt[id]."'>".$nt[Title]."</a></p>";
}
$row=$row+1;
}

答案 1 :(得分:0)

<?php
$nt=array();
$query="SELECT * FROM  table WHERE field=item ORDER BY date DESC LIMIT 20";
$rt=mysql_query($query);
echo mysql_error();

if ($nt=mysql_fetch_array($rt)) {   
    ... do first line ...
}
while($nt=mysql_fetch_array($rt)){                              
echo "<p class='columnitem'><a href='/item/".$nt[id]."'>".$nt[Title]."</a></p>";
}
?>

答案 2 :(得分:0)

你也可以从MySQL方面做到这一点:

$nt=array();
$query="SET @rownum = 0; SELECT (@rownum:=@rownum+1) as rownum,table.* FROM  table WHERE field=item ORDER BY date DESC LIMIT 20";
$rt=mysql_query($query);
echo mysql_error();

while($nt=mysql_fetch_array($rt)){                              
echo "<p class='" . ($nt['rownum'] == 1 ? 'firstrow' : 'columnitem') . "'><a href='/item/".$nt[id]."'>".$nt[Title]."</a></p>";
}
?>
但是,这有点像黑客,因为你必须记住手动设置@rownum变量。这里希望MySQL的未来版本能够获得类似SQL Server的ROW_NUMBER()函数......