Как заставить PHP HTML-таблицу иметь несоответствие цвета между строками? - PullRequest
0 голосов
/ 06 августа 2011

Я учу PHP, как я кодирую. Из примера на w3schools показано использование PHP и msql для отображения результатов базы данных в html-таблице. Мои вопросы: у меня теперь слишком много строк, и я не мог заставить их иметь несоответствие цветов между строками. Я попытался добавить диапазон стилей и цвет шрифта после <td, но это не сработало. весь PHP просто не работает, если я так делаю.

<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("my_db", $con);

$result = mysql_query("SELECT * FROM Persons");

echo "<table border='1'>
<tr>
<th>Firstname</th>
<th>Lastname</th>
</tr>";

while($row = mysql_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['FirstName'] . "</td>";
  echo "<td>" . $row['LastName'] . "</td>";
  echo "</tr>";
  }
echo "</table>";

mysql_close($con);
?>

Вывод кода выше будет:

Firstname   Lastname
Glenn   Quagmire
Peter   Griffin

http://www.w3schools.com/php/php_mysql_select.asp

Ответы [ 5 ]

1 голос
/ 06 августа 2011

Может быть, вы можете использовать этот подход с JQuery

<script src="text/javascript">
    $('#table tbody tr:odd').addClass('odd');
    $('#table tbody tr:even').addClass('even');
</script>

, а затем добавить стили

.odd { background-color: #color }
.even { background-color: #color }
1 голос
/ 06 августа 2011
$class = "even";    
while($row = mysql_fetch_array($result))
{
  if($class == "even")
  {
    echo "<tr class='$class'>";
    $class = "odd";
  }
  else
  {
    echo "<tr class='$class'>";
    $class = "even";
  }

  echo "<td>" . $row['FirstName'] . "</td>";
  echo "<td>" . $row['LastName'] . "</td>";
  echo "</tr>";
}

CSS

tr.even
{
    background-color:blue;//Pick your own color
}

tr.odd
{
    background-color:green;
}

Вот список названий цветов .Если вы хотите более детальный выбор цвета, нажмите здесь .

1 голос
/ 06 августа 2011

Заменить это:

while($row = mysql_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['FirstName'] . "</td>";
  echo "<td>" . $row['LastName'] . "</td>";
  echo "</tr>";
  }

с этим:

$i = 0;
while($row = mysql_fetch_array($result))
  {
  echo "<tr ". ($i % 2 == 0 ? 'style="background-color:grey;"' : '' .">";
  echo "<td>" . $row['FirstName'] . "</td>";
  echo "<td>" . $row['LastName'] . "</td>";
  echo "</tr>";
  $i++;
  }

Каждый второй ряд будет серого цвета.

1 голос
/ 06 августа 2011

Не совсем уверен, что вы подразумеваете под несоответствием цвета.Предполагая, что вы имеете в виду чередующиеся цвета строк , я бы сделал следующее:

$odd = false;

while (...)
{
    echo '<tr class="'.($odd ? "odd" : "even").'">';
    ...
    echo "</tr>";
    $odd = !$odd;
}

Теперь у вас есть элемент tr класса odd или even поочередно, иможет указать дополнительный цвет фона для одного из них в вашем CSS, например:

tr.odd { background-color: rgba(0, 0, 0, 0.05); }
0 голосов
/ 06 августа 2011

Использование

  $flag = 0;
  while($row = mysql_fetch_array($result))
  {
  if ($flag%2 == 1)
  echo "<tr bgcolor=#123345>";
  else
  echo echo "<tr bgcolor=#643235>";
  echo "<td>" . $row['FirstName'] . "</td>";
  echo "<td>" . $row['LastName'] . "</td>";
  echo "</tr>";
  $flag = $flag +1;
  }
...