2015-05-11 114 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