2009-09-19 6 views
0

demandé si vous pouvez m'aider avec une question de php/question.Mettre en forme le premier élément de la requête différemment au reste

Je veux formater différemment la première ligne pour le reste des lignes (toujours 20 retournées).

Ma requête ressemble à ce moment:

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

Quels sont les formats évidemment toutes les lignes de la même, aide svp!

Répondre

2

Simplest solutions fonctionnent généralement le meilleur:

$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

belle, merci beaucoup! – bluedaniel

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

Vous pouvez le faire à partir du côté MySQL aussi:

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

Il est un peu un hack, cependant, parce que vous avez se souvenir de définir la variable @rownum manuellement. Voici souhaitant qu'une future version de MySQL obtienne quelque chose comme la fonction ROW_NUMBER() de SQL Server ...

Questions connexes