Разноцветные строки таблицы

Orangetime

Новичок
Нужна помощь, подскажите пожалуйста, как добавить случайный цвет для каждой строки генерируемой таблицы? Таблица генерируется так :
echo '<table border = 1 cellspacing=0 >';
while ($byone = mysql_fetch_array($people))
{
echo '<tr>';
echo '<td>' . $byone["name"] . '</td>';
echo '<td>' . $byone["phone"] . '</td>';
};
echo '</tr>';
echo '</table>';

Случайный цвет для строк таблицы получаю так:

$color = '#'.dechex(rand(0, 255)).dechex(rand(0, 255)).dechex(rand(0, 255));

Теперь как добавить каждой строке таблицы случайный цвет?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Видимо надо прописать стиль в тэг TR
 

Orangetime

Новичок
Видимо надо прописать стиль в тэг TR
Если я это сделаю, стиль пропишется всем строкам в таблице, таблица будет одноцветной, а нужно чтобы строки были разных цветов. Через CSS я могу сделать первую или последнюю строки разных цветом, можно сделать чередование цветов, но увы не получается добавлять цвета рандомно(. Есть догадка, написать цикл перебора всех строк в таблице(например foreach) и при переборе назначать им цвета присваиванием переменой $color, но как это реализовать я не знаю, php только начал изучать.
 

AnrDaemon

Продвинутый новичок
CSS не просто так называют каскадными стилями.
Учитесь использовать комбинации и наследование.
HTML:
<tr class="table1 odd"> ... </tr>
<tr class="table1 even"> ... </tr>
 

Orangetime

Новичок
CSS не просто так называют каскадными стилями.
Учитесь использовать комбинации и наследование.
HTML:
<tr class="table1 odd"> ... </tr>
<tr class="table1 even"> ... </tr>
Предложенный вариант даст четным и нечетным строкам в таблице по цвету, но это не решит задачи(получится "полосатая" таблица)- задать рандомный цвет каждой строке в таблице.
 

Andkorol

Новичок
PHP:
echo '<table border = 1 cellspacing=0 >';
while ($byone = mysql_fetch_array($people))
{
echo '<tr style="color: #' . dechex(rand(0, 255)) . dechex(rand(0, 255)) . dechex(rand(0, 255)) . ';">';
echo '<td>' . $byone["name"] . '</td>';
echo '<td>' . $byone["phone"] . '</td>';
};
echo '</tr>';
echo '</table>';
 

Orangetime

Новичок
PHP:
echo '<table border = 1 cellspacing=0 >';
while ($byone = mysql_fetch_array($people))
{
echo '<tr style="color: #' . dechex(rand(0, 255)) . dechex(rand(0, 255)) . dechex(rand(0, 255)) . ';">';
echo '<td>' . $byone["name"] . '</td>';
echo '<td>' . $byone["phone"] . '</td>';
};
echo '</tr>';
echo '</table>';
То что нужно, большое спасибо. Вместо свойства "color" поставить background-color и будет то что нужно. Еще раз спасибо.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Я, видимо, что-то очень сложное сказал, что автор не осилил сделать.
 

Rdelance

Новичок
С помощью foreach можно сделать так:
PHP:
$row_strings = array();

while ($byone = mysql_fetch_array($people))
{
  row_strings[] = array(
    "style" => 'style="color: #' . dechex(rand(0, 255)) . dechex(rand(0, 255)) . dechex(rand(0, 255)) . ';"',
    "name" => $byone["name"],
    "phone" => $byone["phone"]
  );
}

// var_dump($row_strings); // раскомментировать для отладочного вывода массива $row_strings

echo '<table border = 1 cellspacing=0 >';
foreach(row_strings as $i => $row)
{
  echo '<tr ' . $row["style"] . '>';
  echo '<td>' . $row["name" ] . '</td>';
  echo '<td>' . $row["phone"] . '</td>';
  echo '</tr>';
};
echo '</table>';
заодно при желании проверять по дороге массив через var_dump()
 

Andkorol

Новичок
@Rdelance, а можно ещё пару вариантов – только с бОльшим количеством циклов?
А то одного цикла для такой задачи как-то маловато...
 

damner2

Новичок
Предлагаю вписать в правила, что запрещено создание тем, содержащих код с потенциальными уязвимостями, и кидать ссылку на этот пункт правил в таких темах с кратким описанием куда копать.
Тока нада сформулировать нормально как-нить.... возможно, подумать как сделать так, чтоб это не касалось тех кто понимает, что пишет и, чем это грозит...
 
Сверху