2016-03-24 8 views
-1

私はここで検索していますが、私は統合できる解決策を見つけることができませんでした。コンテンツに基づくPHPの代替行の色

私は、MySQLデータベースからデータが取り込まれた行を持っていますが、私がしたいのは、特定の列が変更されたときに行の色を変更することです。たとえば:

Sponsor Name 
John  Terry 
John  Bob 
John  Paul 
Grant  Peter 
Perry  Toby 
Perry  Gerald 

ので、ジョンのすべての行がROW1、グラントのROW2の背景色を持つことになり、その後、ペリーはROW1再びだろう。

私は単純なスイッチを行い、そのように交互に行うことを考えましたが、スポンサーのために20種類の異なる可能性があり、より簡単な方法があるかどうかを知りたかったのです。

簡単な方法がありますか、またはスイッチのステートメントを経由して行っていますか?

乾杯

+2

あなたは現在、このデータを表示するために使用しているコードが含まれている場合、それはどのように提案するために誰かのために容易になりますこれを達成するために修正してください。 –

+0

2色のテーブル行に色を付けることを意味しますか? 3番目の行の色は#1と4番目の行の色は#2、5番目と6番目の色は色の#1と次の行の色は#2のようになりますか?あなたは何に基づいて色を変えますか?あなたはスポンサーの名前に基づいて色を変えていますか? –

+0

@AliFarhoudiええ、基本的に色の変更はスポンサーの名前に基づいています... –

答えて

0

ここでこれを行う一般的な方法があります。あなたがそのコンセプトを理解すれば、あなたはそれをあなたの特定のニーズに合わせて適応させることができるはずです。基本的には、クエリ結果を繰り返し処理する際に、前の項目を追跡します。現在の項目が異なる場合は、色を変更します。ここで

$sponsors = ['John', 'John', 'Grant', 'Perry', 'Perry']; 

$color = null; 
$previous_sponsor = null; 

foreach ($sponsors as $sponsor) { 
    if ($sponsor != $previous_sponsor) { 
     $color = $color == 'red' ? 'green' : 'red'; 
     $previous_sponsor = $sponsor; 
    } 
    echo "$sponsor $color<br>"; 
} 
0

はそのようなものを行うための一般的な方法である:

$dataArray = array(
    array('sponsor' => 'John', 'name' => 'Terry'), 
    array('sponsor' => 'John', 'name' => 'Bob'), 
    array('sponsor' => 'Grant', 'name' => 'Peter'), 
    array('sponsor' => 'Grant', 'name' => 'Peter'), 
    array('sponsor' => 'John', 'name' => 'Bob'), 
    array('sponsor' => 'John', 'name' => 'Bob'), 
    array('sponsor' => 'Grant', 'name' => 'Peter'), 
    array('sponsor' => 'Grant', 'name' => 'Peter'), 
    array('sponsor' => 'John', 'name' => 'Bob'), 
); 

$colors = array('red', 'green', 'blue'); 
$currentColorIndex = 0; 

echo '<table>'; 
foreach ($dataArray as $key => $data) { 
    if ((key($dataArray) > 0) && ($data['sponsor'] !== $dataArray[key($dataArray) - 1]['sponsor'])) { 
     $currentColorIndex = ($currentColorIndex + 1) % count($colors); 
    } 
    echo '<tr style="background-color: ' . $colors[$currentColorIndex] . '">' . 
      '<td>' . $data['sponsor'] . '</td>' . 
      '<td>' . $data['name'] . '</td>' . 
     '</tr>'; 
} 
echo '</table>'; 
関連する問題