Изменение цвета в PHP

Ниже приведены несколько фрагментов кода из некоторых очень простых PHP. Я решил добавить чередующиеся цвета строк, чтобы сделать вещи немного яснее. Однако проблема заключается в том, что все, что я задал значениям цвета для строк, чередуются между темно-красным фоном и фокусом. Это происходит как в Windows, так и в Linux, и я не понимаю, почему?

$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++; } 

Положив мой комментарий на ответ:

colour_even: colour_odd они рассматриваются как константы . Вероятно, вы забыли знаки $ .

Используя отчет об ошибках, вы сказали бы вам что-то вроде «Undefined constant colour_even …» и т. Д.

Измените его следующим образом: $colour_even: $colour_odd;

Добавьте отчет об ошибках в начало файла (ов), который поможет найти ошибки.

 <?php error_reporting(E_ALL); ini_set('display_errors', 1); // rest of your code 

Sidenote: Сообщение об ошибках должно выполняться только в стадии постановки и никогда не выпускаться.

Хотя вы можете сделать это в PHP, и вы отметили свой вопрос с помощью PHP, я предпочитаю использовать CSS с n-м селектором.

Например, имеют следующие правила CSS,

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

http://jsfiddle.net/9msus8ka/

Это все так неправильно. Пожалуйста, прекратите использовать любые источники, которые вы изучаете, и начните читать PHP, «Правильный путь»

Во-первых, используйте 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 устарел .

Вот пример альтернативы:

 $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_even и colour_odd качестве констант, когда вы объявили их как переменные.

Наконец, устаревшие атрибуты align в HTML тоже устарели. Пожалуйста, подумайте об использовании эквивалента CSS, text-align: center .