www.kaminskiy-web.com | contact@kaminskiy-web.com
Статьи для веб-мастера - Kaminskiy-web

Главная страницаОбо мнеКонтактная информация
Статьи HTML и CSS JavaScript PHP и MySQL Раскрутка сайтов Хостинг Рейтинг украинского хостинга Анекдоты Анекдотов стрит

Чередующиеся строки таблицы

Автор статьи: Сергей Каминский

На многих сайтах можно увидеть таблицы с чередующимися строками. Делается это для того, чтобы было удобнее просматривать содержимое таблиц. Конечно же сделать это вручную в статичном документе с помощью только HTML и CSS, когда заранее известен размер таблицы, совсем нетрудно. Но часто таблицы генерируются динамически. Как же сделать это с помощью PHP и MySQL? Для начала рассмотрим несколько примеров без использования базы данных.

Способ первый

Для определения в какой цвет окрашивать строку мы будем использовать цикл for. Сначала мы присвоим переменной $color начальный цвет, например, #DF0000 (красный), а в цикле будем проверять переменную $color, и если она будет содержать красный цвет, то присвоим переменной $color значение #00DF00 (зеленый цвет) и вставим его в таблицу. Если же переменной будет присвоен зеленый цвет, то снова делаем его красным. Давайте рассмотрим пример, чтобы все было понятнее:

<?php

echo '<table cellpadding="5" cellspacing="0" border="1" width="100">';

// начальный цвет
$color='#DF0000';
for ($i = 0; $i<5; $i++) {

    // начало строки
    echo '<tr ';

    // определяем какой цвет выводить
    if ($color=='#DF0000') $color = '#00DF00';
    else $color = '#DF0000';

    // выводим цвет строки и данные таблицы
    echo 'bgcolor="' . $color . '"><td width="35">' . $i . '</td>';
    echo '<td width="65">' . $color . '</td></tr>';
}
echo '</table>';

?>

Чередующиеся строки таблицы
Чередующиеся строки таблицы: два цвета

Как видите ничего сложного. Можно не ограничиваться двумя цветами, а использовать три и более цветов. Давайте изменим наш предыдущий пример и добавим еще один цвет, например, #0000DF (синий):

<?php

echo '<table cellpadding="5" cellspacing="0" border="1" width="100">';
$color = '#DF0000'; // начальный цвет
for ($i = 0; $i<5; $i++) {

    // начало строки
    echo '<tr ';

    // определяем какой цвет выводить
    if ($color=='#DF0000') $color = '#00DF00';
    elseif ($color=='#00DF00') $color = '#0000DF';
    else $color = '#DF0000';

    // выводим цвет строки и данные таблицы
    echo 'bgcolor="' . $color . '"><td width="35">' . $i . '</td>';
    echo '<td width="65">' . $color . '</td></tr>';
}
echo '</table>';

?>

Чередующиеся строки таблицы
Чередующиеся строки таблицы: три цвета

Способ второй – делением на два

Конечно же, существуют и другие способы решения данной задачи. Многие программисты делят номер строки на 2 и определяют, есть ли остаток от деления и в зависимости от этого присваивают строке нужный цвет:

<?php

echo '<table cellpadding="5" cellspacing="0" border="1" width="100">';

for ($i = 0; $i<12; $i++) {

    // определяем есть ли остаток от деления
    if ($i % 2) {

        // если есть, то присваиваем красный цвет
        $color = '#DF0000';
    }

    // иначе присваиваем зеленый цвет
    else $color = '#00BF00';

    echo '<tr bgcolor="' . $color . '"><td width="35">' . $i . '</td>';
    echo '<td width="65">' . $color . '</td></tr>';
}
echo '</table>';

?>

Пример вывода из базы данных MySQL

В большинстве случаев данные, для вывода в динамически генерируемую таблицу, извлекаются из базы данных или из текстового файла. Давайте рассмотрим простой пример вывода информации из базы данных MySQL в нашу таблицу. Вернемся снова к нашему первому примеру с двумя цветами, поскольку обычно используется только два цвета.

<?php 

define('DB_HOST', 'localhost'); // сервер БД
define('DB_USER', 'login'); // логин БД
define('DB_PASS', 'password'); // пароль БД
define('DB_NAME', 'database'); // имя БД

// подключаемся к БД
mysql_connect(DB_HOST,DB_USER,DB_PASS);
mysql_select_db(DB_NAME);

// делаем запрос к БД
$result = mysql_query("SELECT * FROM table_name;");

// количество строк
$num_results = mysql_num_rows($result);
echo '<table cellpadding="5" cellspacing="0" border="1" width="100">';

// начальный цвет
$color = '#DF0000';
for ($i = 0; $i<$num_results; $i++) {
    $row = mysql_fetch_array($result);

    // начало строки
    echo '<tr ';

    // определяем какой цвет выводить
    if ($color=='#DF0000') $color = '#00DF00';
    else $color = '#DF0000';

    // выводим цвет строки и данные таблицы
    echo 'bgcolor="' . $color . '"><td width="35">' . 
    stripslashes($row["name"]) . '</td>';
    echo '<td width="65">' . stripslashes($row["email"]) . '</td></tr>';
}
echo '</table>';

?> 

Заключение

Оба способа могут решить нашу задачу, но первый способ позволяет использовать любое количество цветов строк в таблице.

Другие записи по теме в разделе статьи по PHP и MySQL

Копирование статьи запрещено.