Farklı kalanına sorgudan ilk öğeyi biçimlendirmek

2 Cevap php

Bir php / sorgu soru ile bana yardımcı olabilir merak etti.

Ben farklı (her zaman 20 döndürülen) satırların kalanı için ilk satırı biçimlendirmek istiyorum.

Benim sorgu şu anda bu gibi görünüyor:

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

Açıkçası tüm satırlar aynı hangi formatları, lütfen yardım!

2 Cevap

Basit çözümler genellikle iyi çalışır:

$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;
}

Siz de MySQL taraftan bu yapabilirdi:

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

El @ rownum değişkeni ayarlamak için hatırlamak zorunda çünkü olsa, bir bir hack biraz. İşte MySQL gelecekte bazı sürümünü diliyor, SQL Server'ın ROW_NUMBER() fonksiyonu gibi bir şey olur ...