2011-04-12 11 views
3

私はwhileループを使用して、MySQLクエリの結果を表示します。私は最後の行または奇数行の出力を変更する方法を知っていますが、最後の2つの結果の出力をどのように変更できますか?whileループの最後の2行のクラスを変更します

たとえば、2x2のマトリックスにborder-bottom:1pxの結果リストがありますが、境界線なしで下の2つを表示したいのですか?

+0

いくつかのコードを投稿... –

+0

CSSの[:nth-​​last-child](http://reference.sitepoint.com/css/pseudoclass-nthlastchild)とおそらくクラスを保存する – yoavmatchulsky

答えて

0

うんちょうどこのようにそれを行う:あなたが使用することができ、私は、その貧弱なサポートにCSS3のメソッドを使用することはありません

$result = //execute your query 
$num_rows = mysql_num_rows($result; 
$num_rows_different = 2; 

$loop_counter = 0; 
while ($loop_counter < $num_rows) { 
    if ($loop_counter < $num_rows - $num_rows_different) { 
     // with border 
    } else { 
     // no border 
    } 
    $loop_counter++; 
} 

...

4

あなたはCSS3を使用することができた場合は、簡単なit's( - 私は、例えばリストを使用):

li:nth-last-child(-n+2) 

は、過去2 li年代を選択します。

PHPで実行したい場合は、結果の数を数え、ループ内にカウンタを追加して最後の2つの項目にクラスを追加します。

+0

jQueryでこれと同様のソリューションを実装できるはずですか?そのセレクタが機能するようです。 – Dereleased

+0

@Dereleased私はそれを試していないが、それはネイティブにそれをサポートしていないブラウザに使用するものだ。 – jeroen

0

私はCSSの方法が好きですが、あなたがリストしているアイテムの総数を知る必要があります。次に、単純な条件を使ってそれをチェックすることができます。

$total_items = [count of items]; 
$cnt = 0; 
while($fetch as $row) { 
    ... 
    if(++$cnt > ($total_items - 2)) { 
     // list with no border 
    } else { 
     // list with border 
    } 
} 
関連する問題