2009-09-19 41 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()函數...