2009-09-19 24 views
0

想知道您是否可以帮助我处理php/query问题。将查询中的第一项与其他查询的格式区别开来

我想以不同的格式化第一行到其余的行(总是返回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>"; 
} 
?> 

这显然格式的所有行一样,帮助请!

回答

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; 
} 
+0

美丽,非常感谢你! – bluedaniel 2009-09-19 22:58:13

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>"; 
} 
?> 
0

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

$nt=array(); 
$query="SET @rownum = 0; SELECT (@rownum:[email protected]+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()函数...

相关问题