2011-11-11 4 views
0

私は料金表を出力しています。各レート期間には毎日レートと週ごとレートがありますが、レート期間は同じです。php whileループで簡単にグループ化できますか?

私は2つのセットを設定した後で背景色を変更しようとしています。つまり、基本的に表には次のように表示されます:

Date 1 - Weekly Rate 
Date 1 - Daily Rate 
<change bg color> 
Date 2 - Weekly Rate 
Date 2 - Daily Rate 
<change bg color back to original> 

現時点では、スタイルシートに背景色を設定する2つのスタイルがあります。そして私が使用しているコードは、私に行を変更してくれます。私はちょうどそれがすべての他のものの代わりに、すべてを変えている理由を見ることができません!

これを行うには、Date1とDate2を比較しなければなりません。 (私は私がに行きたくない理由のために、それは、すべての2回の繰り返しを変更することはできません。)

ここに私のコードは、これまでwhileループの内側です。助けて!そしてありがとう。私たちは反復ごとに現在の日付PREVの状態を設定している場合我々は、この理由は非常に簡単に見ることができます

if ($previous !== $row[datefrom]) 
{  
    $thecolor = "bg1"; 
} 
else 
{ 
    $thecolor = "bg2"; 
} 

echo "<tr class=\"".$thecolor."\"> \n"; 
echo "<td>" . $row[datefrom] . " - " . $row[dateto]. "</td> \n"; 
echo "<td>" . str_replace(" 3-5","",$row[Ratetype]) . "</td> \n"; 
echo "<td>$" . $row[Rate] . "</td> \n"; 
echo "</tr> \n"; 

$previous = $row[datefrom]; 
+0

質問はどこですか?私たちはあなたに何を手伝ってほしいのですか? –

答えて

1

また、最後に使用した背景色を覚えておく必要があります。バックグラウンドカラーを使用しないと、グループの最初の入力時にのみ背景が変更されます。例:

$use_original_bg = TRUE; 

for(/*...*/){ 
    if ($previous !== $row[datefrom]) { 
     $use_original_bg = !$use_original_bg; 
    } 
    $thecolor = $use_original_bg?"bg1":"bg2"; 
} 
1

:この問題を解決するための

1. date1, prev = nothing => bg1 
2. date1, prev = date1 => bg2 
3. date2, prev = date1 => bg1 
4. date2, prev = date2 => bg2 

簡単な方法としては、バックグラウンドの状態も考慮に入れる。私はあなたにそれをいくつかの考えを与えるために残しておきます。

+0

ああ私はyaと一緒にいる。だから私の日付が私の最初のif文と一致しなければ、背景が等しくないと言うフラグを設定しなければなりません。次に、実際の日付条件ではなく、背景に基づいて色を設定します。これはあなたが何を得ているのですか? :) – NarfFlarf

関連する問題