2012-08-16 99 views
0

我試圖使用if -statement更改<td> -s顏色。用if語句更改td的顏色

基本上,我有一個簡單的查詢來從數據庫中檢索信息。 另外,我有一個專欄,保存信息,如任務是否完成。當我檢索到所有這些信息時,我需要完成的任務是綠色的,而其他的則沒有任何顏色。

我已經找到了答案,但我找不到滿足我的任何事情。

例如:


$qry = mysql_query("select * from table"); 
$recs = array(); 
while($row = mysql_fetch_array($qry)) 
$recs[]=$row; 
mysql_free_result($qry); 

我試圖同時聲明,上面的代碼添加,但我很困惑,它沒有工作:(

我使用heredoc打印結果: 如何在這裏給它們顏色?


<?php 
$last_id=0; 
foreach($recs as $rec) 
{ 
    $html=<<<HTML 
<tr> 
<td><b>Номер</b></td> 
<td>$rec[0]</td> 
</tr> 
<tr> 
<td><b>Номер документа</b></td> 
<td>$rec[1]</td> 
</tr> 
<tr> 
<td><b>Дата регистрации</b></td> 
<td>$rec[8]</td> 
</tr> 
<tr> 
<td><b>От кого</b></td> 
<td>$rec[2]</td> 
</tr> 
<tr> 
<td><b>По</b></td> 
<td>$rec[4]</td> 
</tr> 
<tr> 
<td><b>Краткое содержание</b></td> 
<td>$rec[3]</td> 
</tr> 
<tr> 
<td><b>Исполнитель</b></td> 
<td>$rec[5]</td> 
</tr> 
<tr> 
<td><b>Срок исполнения</b></td> 
<td>$rec[6]</td> 
</tr> 
<tr> 
<td><b>Срок исполнения продлен до</b></td> 
<td><b>$rec[10]</b></td> 
</tr> 
<tr> 
<td><b>Прислан</b></td> 
<td>$rec[9]</td> 
</tr> 
<tr> 
<td><b>Примечание</b></td> 
<td>$rec[7]</td> 
</tr> 
<tr> 
<td bgcolor="#838B83">&nbsp;</td> 
<td bgcolor="#838B83">&nbsp;</td> 
</tr> 
HTML; 
    print $html;   
    if($rec[0]>$last_id) 
     $last_id=$rec[0]; 
}; 
$new_id=$last_id+1; 
?> 

+0

HTML在哪裏輸出? – Nick 2012-08-16 10:42:05

回答

0

我建議你使用三元運算符,而不是使用IF語句,或者你可以使用另一個解決方法來使用數組來定義顏色,這將幫助你爲全局的每個狀態值定義各種顏色,請找一個例子如下:

$aryColor = array(
'complete' => 'green', 
'incomplete' => "red", 
'pending' => 'orange' 
..... 
); 
//you can specify values for all of your status, or leave them blank for no color, the keys in the array are the possible values from your status field 
foreach($recs as $rec) { 
echo '<tr bgcolor="'.$aryColor[$rec['status_field']].'"> 
<td>'.$rec['title_field'].'</td> 
</tr>'; 
} 

我希望這可以幫助你,你可以很容易地編輯HEREDOC。

+0

我想我理解你的代碼,以及你的意思。但是我無法在我的代碼中做到這一點:(看,我寫了這樣的smth:'$ qry = mysql_query(「select * from table」); while($ row = mysql_fetch_assoc($ qry)){ 如果($行[ '完成'] == 1){$ = status_field '完整的'; }否則{ $ status_field = '不完全'; } } $倫理委員會=陣列(); $計數= mysql_num_rows($ QRY); 而($行= mysql_fetch_array($ QRY)) $倫理委員會[] = $行; 了mysql_free_result($ QRY); $ aryColor =陣列( '完全'=> '綠色' , 'incomplete'=>「red」, );' – Patrick 2012-08-16 11:47:36

+0

'completed'是一個列,意思是說如果它等於1就表示完成。 – Patrick 2012-08-16 11:48:33

+0

@Patrick可以改變陣列如下: '$ aryColor =陣列( 0 => 「紅色」,//表示不完全 1 => 「綠色」 //表示完整 );' – 2012-08-16 11:51:01

5

而不是顏色使用一個類,這樣你就可以在CSS

<td<?php if($row['complete']) echo ' class="complete"'; ?>>data</td> 
1
<table> 
    <tr> 
     <td>column heading</td> 
    </tr> 
    <?php 
    $qry=mysql_query("select * from table"); 
    while($row=mysql_fetch_array($qry)) { 
     if($row['urcolumnn']==1) 
     { 
     echo "<tr bgcolor=green>"; 
     } 
     else 
     { 
      echo "<tr>"; 
     } 
     ?> 

     <td> 
      <?php echo $row['urcolumn']; ?> 
     </td> 
    </tr> 
    <?php } ?> 
</table> 

這是一個示例代碼進行更改。認爲這會幫助你。這裏我給背景色爲<tr>這樣如果u想給顏色<td>使用本<td style="background-color:green;">

+0

感謝您的回答。但是,if($ row ['urcolumn'] == 1)'是什麼意思? – Patrick 2012-08-16 11:09:42

+0

你必須根據條件正確地做出綠色。所以我只是添加一個示例條件,如果該值爲1(它只是一個示例)將綠色或其他顏色。爲了便於理解,我添加了這個。現在我認爲它很混亂。 – 2012-08-16 11:15:38

0

首先你應該改變你的列值改變其結構爲int並設置爲默認值爲「0」。所以,當你的任務完成後,字段值應該更改爲「1」。

現在來到你的代碼:

$qry = mysql_query("select * from table"); 
while($row = mysql_fetch_assoc($qry)){ 
    if($row['status']==1){ 
    echo "<td color="green">Data</td>" 
    } 
    else{ 
     echo "<td color="white">Data</td>"; 
    } 
} 

因此您可以在綠色其中狀態爲== 1手段完備,白色不完全得到行。

+0

我想它會工作如果我打印結果就在那裏,因爲我使用定界符,我不能這樣做:( – Patrick 2012-08-16 11:32:23

+0

您可以通過使用功能做到這一點,就這一文件的新功能,並返回我的SQL資源ID,並在您輸出此HTML的文件上調用此函數。絕對有效 – 2012-08-16 11:35:48