2015-05-11 115 views
0

以下是一些非常基本的PHP代碼片段。我決定添加交替的行顏色以使事情更清晰。然而,我的問題是,無論我設置顏色值的行在深紅色和紫紅色背景之間交替。這發生在Windows和Linux上,我不明白爲什麼?在PHP中更改顏色

$row_count = 1; // track rows 
//$colour_odd = "#FFE680"; 
$colour_odd = "F0FFFF"; 
//$colour_even = "#FFF2BF"; 
$colour_even = "00FFFF"; 

while ($row = mysql_fetch_assoc($result)) { 
    $row_colour = (($row_count % 2) == 0) ? colour_even: colour_odd; 
    echo ' 
     <tr bgcolor="' . $row_colour . '"> 
      <td width="150" align="center">' . $row['FirstName'] . '</td> 
      <td align="center"><a href="' . $row['LastName'] . '">' .$row['LastName'] . '</a></td> 
     </tr>'; 
    $row_count++; 
} 
+1

'colour_even:colour_odd'那些被視爲常量。你可能忘記了'$'標誌。使用錯誤報告會告訴你類似「Undefined constant ....」 –

+0

'$ row_colour =(($ row_count%2)== 0)? $ colour_even:$ colour_odd;' –

回答

1

把我的評論一個答案:

colour_even: colour_odd那些被視爲constants。您可能忘記了$標誌。

使用錯誤報告會告訴你的東西,如「未定義的常量colour_even ......」

將其修改爲已讀:$colour_even: $colour_odd;

添加error reporting到文件的頂部(S )這將有助於發現錯誤。

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

// rest of your code 

旁註:錯誤報告只應在分期完成,並且從不生產。

+0

斑點。對不起,浪費你的時間,並感謝錯誤報告 - IDE沒有提示有問題! –

+0

@讓 - 米歇爾不客氣。無後顧之憂,歡呼聲 –

3

雖然你可以在PHP中完成,但你已經用PHP標記了你的問題,我更喜歡在第n個選擇器中使用CSS。

例如,有以下CSS規則,

tr { 
    background: #00FFFF; 
} 
tr:nth-child(2n+2) { 
    background: #F0FFFF; 
} 

http://jsfiddle.net/9msus8ka/

1

這一切都是錯的。請停止使用您正在學習的任何資源,並開始閱讀PHP, The Right Way

首先,請使用PDO或MySQLi連接到數據庫併發出查詢。原始的MySQL連接器mysql_*充滿了安全問題,缺少準備好的語句,注入時機已經成熟,並且自PHP 5.5起棄用。

下面是一個例子可供選擇:

$pdo = new PDO("mysql:host=localhost;dbname=my_db;charset=UTF-8;", "my_user", "my_pass"); 

$statement = $pdo->query("SELECT some_field FROM some_table"); 

while($row = $statement->fetch(PDO::FETCH_ASSOC)) 
    // .. do what you need to 

二,請使用CSS設置背景顏色。 bgcolor屬性是deprecated

下面是一個例子可供選擇:

$row_colour = (($row_count % 2) == 0) ? $colour_even: $colour_odd; 
echo ' 
    <tr style="background-color: #' . $row_colour . ';"> 
     <td width="150">' . $row['FirstName'] . '</td> 
     <td><a href="' . $row['LastName'] . '">' .$row['LastName'] . '</a></td> 
    </tr>'; 
$row_count++; 

此外,還有一個語法錯誤,因爲你使用colour_evencolour_odd爲常數,當你宣佈他們爲變量。

最後,在HTML中使用align屬性也被棄用。請考慮使用相應的CSS,text-align: center

+0

感謝您的提示。我會返回相當古老的圖書館。它似乎很好,因爲它匹配了網上的一些類似的例子! –

+0

不幸的是,PHP的學習曲線相當低,所以您可以找到幾乎與您搜索的任何內容相匹配的示例。這是一件好事,這是一件可怕的事情。儘管如此! – Goldentoa11