Ниже приведены несколько фрагментов кода из некоторых очень простых 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; }
Это все так неправильно. Пожалуйста, прекратите использовать любые источники, которые вы изучаете, и начните читать 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
.