Шаблон в цикле - PullRequest
       38

Шаблон в цикле

0 голосов
/ 25 октября 2009
<table>
while ($row = mysql_fetch_assoc($result)) {
<tr>
<td>
echo $row['test'] . " " . ' ($' . $row['test2'] . ")<br>";
</td>
</tr>
}
</table>

Как сделать шаблон для цвета фона? Например, серый, синий, серый синий.

Ответы [ 4 ]

2 голосов
/ 25 октября 2009

Есть несколько способов сделать это. Вот один.

<table>
<?php $i = 0; ?>
<?php while ($row = mysql_fetch_assoc($result)): ?>
<tr<?php echo (++$i & 1 == 1) ? ' class="odd"' : '' ?>>
<td>
<?php echo $row['test'] . " " . ' ($' . $row['test2'] . ") ?><br>
</td>
</tr>
<?php endwhile; ?>
</table>

Я предлагаю давать класс CSS (я назвал его «нечетным») для каждой второй строки, а не как нечетный, так и четный. Тогда вы просто делаете:

tr td { background: grey; }
tr.odd td { background: blue; }

в CSS.

1 голос
/ 25 октября 2009

Вам нужно что-то вроде переменной состояния, где вы храните, где последний ряд был синим или серым. Затем вы распечатываете другой цвет и обновляете переменную состояния для следующего прохода.

Это один пример:

<?php

echo '<table>';

$state = 1;
while ($row = mysql_fetch_assoc($result)) {
    echo '<tr>';
    if( $state%2 == 0 )
        echo '<td style="background-color:grey;">';
    else
        echo '<td style="background-color:blue;">';
    echo $row['test'] . " " . ' ($' . $row['test2'] . ")<br>";
    echo '</td></tr>';
    $state++;
}
echo '</table>';

?>
1 голос
/ 25 октября 2009

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

2 цвета

$blue = true;
<table>
while ($row = mysql_fetch_assoc($result)) {
<tr>
<td color="<?php echo $blue?'blue':'grey'; $blue ^= true; ?>">
echo $row['test'] . " " . ' ($' . $row['test2'] . ")<br>";
</td>
</tr>
}
</table>

Более 2 цветов, общее решение:

$colourIndex = 0;
$colours = ('blue', 'red', 'green');

...
...

<td color="<?php echo $colours[$colourIndex]; $colourIndex = ($colourIndex+1)%length($colours); ?>">
0 голосов
/ 25 октября 2009

Вы также можете использовать InfiniteIterator , чтобы повторять последовательность снова и снова. Это, как и «вращающийся счетчик», работает для произвольного количества элементов.

$props = new InfiniteIterator(
  new ArrayIterator(array('a', 'b', 'c','d', 'e'))
); $props->rewind();

$l = rand(10, 20); // or whatever
for ($i=0; $i<$l; $i++) {
  $p = $props->current(); $props->next();
  echo 'class="', $p, '"... ';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...