2011-11-11 74 views
0

我正在輸出費率表。每個費率週期都有一個每日費率和一個周費率,但費率週期保持不變。簡單的分組與PHP while while循環?

所以我試圖改變兩次設置後的背景顏色。所以基本上,表格會顯示:

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> 

此刻,我在樣式表中爲背景顏色設置了兩種樣式。而我使用的代碼給了我ALTERNATING行。我只是不明白爲什麼它會改變每一個,而不是每一個!

爲此,我必須比較一個Date1到Date2。 (由於我不想進入的原因,我無法每兩次更改一次)。

這是我在while循環中的代碼。幫幫我!謝謝你。

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

啊,我和你在一起。因此,如果我的日期與我的第一條if語句不匹配,我應該設置標誌以表示背景不平等。然後我根據BACKGROUND設置我的顏色,而不是實際的日期條件。這是你在做什麼? :) – NarfFlarf