2013-07-25 69 views
2

所以我填充HTML表格與數據從下列查詢:風格如果列的一個屬性錶行是真正的

$content_downloads = mysql_query("SELECT 
    s.site, s.machine, d.projectid, d.directorySize, d.connectivityError, 
    d.blocked, d.blockedBy, d.blockedSince, d.errorString, d.dashboardTimeStamp 
    FROM rtcdb.site_machines s 
    LEFT JOIN rtcdb.downloadstatuses d 
    on (s.site = d.site and s.machine = d.machine)    
    where s.site in (select d2.site from rtcdb.downloadstatuses d2 
    where d2.dashboardTimeStamp > (SELECT DATE_ADD(max(dashboardTimeStamp),INTERVAL -1 DAY) 
    from rtcdb.downloadstatuses)) order by s.site, s.machine asc", $con) or die(mysql_error()); 

此查詢進入基於以下HTML HTML表/ PHP:此表

  <table> 
       <thead> 
        <tr> 
         <th>Site</th> 
         <th>Machine</th> 
         <th>Project ID</th> 
         <th>Folder Size</th> 
         <th>Error Description</th> 
        </tr> 
       </thead> 

       <tbody> 
        <?php 
         while ($row = mysql_fetch_assoc($content_downloads)) { 
          $error_string = ""; 
          if ($row["connectivityError"] == true) { 
           $error_string = "COULD NOT CONNECT: " . $row["errorString"]; 
          } 
          elseif ($row["blocked"] == true) { 
           $error_string = "BLOCKED BY LOCK OWNED BY: " . $row["blockedBy"] . " " . $row["blockedSince"]; 
          } 

          echo ' 
           <tr> 
            <td>'.$row["site"].'</td> 
            <td>'.$row["machine"].'</td> 
            <td>'.$row["projectid"].'</td> 
            <td>'.$row["directorySize"].'</td> 
            <td style = "text-align: left; color: red;">'.$error_string.'</td> 
           </tr> '; 
          } 
         ?> 
       </tbody> 
     </table> 

錯誤描述列很少有內容。正如你所看到的,當它發生時,一個PHP條件函數(if和ifelse函數)會在錯誤描述之前放置一條語句,以使描述更容易理解。您可能會注意到的一件事是,我正在爲錯誤描述的文字着色爲紅色。當我需要你的幫助時,我掙扎着的是,當該行中的錯誤描述單元格有一個值時,選擇性地使用黃色背景顏色對整行進行樣式設計。換句話說,當我寫的兩個條件都成立時,我想使包含錯誤描述的行的背景顏色變成黃色。

這似乎很簡單,但我已經嘗試過各種選擇,似乎無法弄清楚。任何提示StackOverflow?

+0

你看過使用jQuery嗎? – mcriecken

+0

不,我應該研究什麼樣的jQuery方法? – jakelaz

+0

使用jQuery來設計靜態內容就像使用螺絲刀敲擊指甲。 – Stephen

回答

2

檢查錯誤字符串爲空:

echo ' 
    <tr' . (empty($error_string) ? '' : ' style="background-color:yellow;"') . '> 
     <td>'.$row["site"].'</td> 
     <td>'.$row["machine"].'</td> 
     <td>'.$row["projectid"].'</td> 
     <td>'.$row["directorySize"].'</td> 
     <td style = "text-align: left; color: red;">'.$error_string.'</td> 
    </tr> '; 
+1

我更新此以突出顯示該行。順便說一下,這將解決您的問題,但您應該考慮使用CSS而不是內聯樣式,正如@Marc在他的回答中所建議的。 – Stephen

+0

您可以更新您的示例代碼並用類屬性替換樣式屬性。 – Shauna

+0

感謝您的答案,但黃色背景顏色沒有顯示在這些行:( – jakelaz

2

我會嘗試是設置在感興趣的行類:

<tr class="highLight"> 

,然後用CSS來設置背景顏色細胞該行中:

tr.highLight td {background-color: yellow; } 

設置類屬性是你的錯誤字符串包含內容。

1

試試這個:

if($error_string != "") 
{ 
    echo '<tr class="error-row"'; 
}else{ 
    echo '<tr>'; 
} 
echo '<td>'.$row["site"].'</td> 
     <td>'.$row["machine"].'</td> 
     <td>'.$row["projectid"].'</td> 
     <td>'.$row["directorySize"].'</td> 
     <td style = "text-align: left; color: red;">'.$error_string.'</td> 
     </tr> '; 

,並添加到您的樣式表:

.error-row{background:yellow;} 
如果你想要更少的代碼,你可以使用,如果簡寫太像這樣

echo '<tr' . ($error_string == "" ? '' : 'class="error-row"') . '> 
      <td>'.$row["site"].'</td> 
      <td>'.$row["machine"].'</td> 
      <td>'.$row["projectid"].'</td> 
      <td>'.$row["directorySize"].'</td> 
      <td style = "text-align: left; color: red;">'.$error_string.'</td> 
     </tr> '; 
+0

感謝您的答案 - 它似乎喜歡它應該工作,但我不斷收到此錯誤消息:「解析錯誤:語法錯誤,意想不到'如果'(T_IF)在C:\ Program Files \ Apache軟件基金會\ Apache2.2 \ htdocs \ DownloadStatus.php在線415 「任何想法爲什麼它不工作? – jakelaz

+0

對不起,我錯了,如果部分,我只是更新它。 –

+0

謝謝你是如此有幫助大衛 – jakelaz

0

好吧,我想出了該怎麼做,並且對於不使用jQuery或類屬性表示抱歉。我非常感謝大家的幫助,當我說每個人的評論和答案都幫助我弄明白時,我很誠實。以下是解決方案:

      if ($error_string != ""){ 
           echo ' 
            <tr style = "background-color: yellow;"> 
             <td>'.$row["site"].'</td> 
             <td>'.$row["machine"].'</td> 
             <td>'.$row["projectid"].'</td> 
             <td>'.$row["directorySize"].'</td> 
             <td style = "text-align: left; color: red;">'.$error_string.'</td> 
            </tr> '; 
           } 
          else { 
           echo ' 
            <tr> 
             <td>'.$row["site"].'</td> 
             <td>'.$row["machine"].'</td> 
             <td>'.$row["projectid"].'</td> 
             <td>'.$row["directorySize"].'</td> 
             <td style = "text-align: left; color: red;">'.$error_string.'</td> 
            </tr> '; 
           } 

感謝大家的幫忙!

+0

你應該再次看看我的答案,我有一個小的錯字。在這裏做的事情會導致很多代碼重複,這將使其很難維護。 – Stephen

相關問題