2017-08-16 32 views
3

我有一個充滿百分比的表格,我的值是從SQL數據庫中提取的。我想根據從SQL中繪製的值來更改css元素(bg顏色,顏色等)。例如。 0-10%=紅色,20-20%=橙色等。我看到這個Changing colour of text in table cell with php and js,但我認爲我插入的%阻止它的工作。這是我的表格代碼,我還沒有其他代碼。用於php表格單元格條件格式的php繪製SQL值的方法

<tr> 
<th>Jan</th> 
<th>Feb</th> 
<th>Mar</th> 
<th>Apr</th> 
<th>May</th> 
<th>Jun</th> 
<th>Jul</th> 
<th>Aug</th> 
<th>Sep</th> 
<th>Oct</th> 
<th>Nov</th> 
<th>Dec</th> 
</tr> 
<tr> 
<td class="rating"><?php echo $wor['rjan'];?>%</td> 
<td><?php echo $wor['rfeb'];?>%/td> 
<td><?php echo $wor['rmar'];?>%</td> 
<td><?php echo $wor['rapr'];?>%</td> 
<td><?php echo $wor['rjun'];?>%</td> 
<td><?php echo $wor['rjul'];?>%</td> 
<td><?php echo $wor['raug'];?>%</td> 
<td><?php echo $wor['rsep'];?>%</td> 
<td><?php echo $wor['roct'];?>%</td> 
<td><?php echo $wor['rnov'];?>%</td> 
<td><?php echo $wor['rdec'];?>%</td> 
</tr> 

而是然後解決我要求的method.One方式建議特定的問題,我認爲這樣做是有一個很長的PHP ifelse語句改變的風格每個SQL場每個單元的類。然而,這需要將陳述寫出12次,這似乎還有很長的路要走。

回答

0

首先,你不必用這麼多if-elseswitch-case塊得到正確的百分比範圍和相應的顏色。使用這樣的簡單的功能:

function getColor($percentage){ 
    $perArray = array(10 => 'red', 20 => 'orange', 30 => 'green', ...); 
    if ($percentage % 10) 
     $percentage = $percentage + (10 - $percentage % 10); 
    return $perArray[$percentage]; 
} 

在上面的函數,$perArray陣列將被解釋如下:

  • 10 => 'red'裝置0-10的百分比值將被分配紅色
  • 20 => 'orange'指的11-20百分比值將被分配橙色
  • 30 => 'green'手段的21-30百分比值將被分配綠色

而且這是你應該怎麼稱呼每個錶行的getColor()功能:

<tr> 
    <th>Jan</th> 
    ... 
    <th>Dec</th> 
</tr> 
<tr> 
    <td style="color:<?php echo getColor($wor['rjan']); ?>;"><?php echo $wor['rjan'];?>%</td> 
    <td style="color:<?php echo getColor($wor['rfeb']); ?>;"><?php echo $wor['rfeb'];?>%</td> 
    ... 
    <td style="color:<?php echo getColor($wor['rdec']); ?>;"><?php echo $wor['rdec'];?>%</td> 
</tr> 
1

創建一個接受百分比作爲參數的PHP函數,通過幾個if語句並返回所需的顏色。

功能可以看起來像:

function get_color($num_str) { 
    $num = intval($num_str); 

    if ($num < 10) return 'red'; 
    if ($num < 20) return 'orange'; 
    // ... 
} 

,利用此功能的則可以是:

<td class="<?php get_color($wor['rfeb']); ?>"> 
    <?php echo $wor['rfeb']; ?>% 
</td> 
0

你只要寫出來十二次,因爲你明確地呼應每個月的<td>。如果您將其放入循環中,則可以編寫格式的邏輯,即

其他答案建議創建一個函數來確定您將使用的格式可以與此結合使用。 (把這個邏輯放到一個函數中似乎對我來說是個好主意,但是你仍然需要調用這個函數12次。)

我建議讓函數返回一個預定義的名字(由你或者某個CSS框架,例如引導程序等)可以應用於單元格的CSS類,而不是使用它來以內聯樣式顯式設置背景色等。舉個例子,我剛剛創建了一個名字(format_percentage_cell),但是無論你想怎麼稱呼它,你都知道。其他答案對於您的實施起點有一些好的想法。

<tr> 
<?php foreach ($wor as $month): ?> 
    <td class="<?= format_percentage_cell($month) ?>"><?= $month ?>%</td> 
<?php endforeach ?> 
</tr> 
1

你可以隨時創建一個函數來完成它。 (另外,<上缺少對rfeb行收盤TD)

對於HTML,使每一行(明顯的CSS類可以在這裏也可以使用):

<td style="backbround-color: <?= color($wor['rmar']) ?>;"><?php echo $wor['rmar'];?>%</td> 

的添加功能所有的PHP

<?php 
function color($amt) { 
    switch (floor($amt/10)) { 
     case 0: return 'red'; 
     case 1: return 'orange'; 
     // ... 
     default: return 'transparent'; 
    } 
} 
0

當你只想要一個sugestion,我會做到以下幾點:

你只需要計算字節。 255是的最大值,每個(除alpha通道外總共3個)顏色範圍,這將是您的100%百分比。如果使用rgb()函數將樣式屬性添加到tr元素,可以輕鬆應用此選項。

所以,如果你想紅(lowbound)綠色(highbound),你只需要做到以下幾點:

function yourfunction($percentage){ 
    return 'rgb('. round((255/100) * $percentage) .', '. round((255/100) * (100 - $percentage)).', 0)'; 
} 

所以調節功能,你的顏色喜好,例如紅色到綠色和直接打印值到<tr style="color: <?= yourfunction($percentage)?>" >value</tr>

+0

'rgb'參數可能需要翻轉,現在無法對其進行測試。 – Xorifelse

相關問題