2012-08-16 98 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