我正在学习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
答案 0 :(得分:1)
不完全确定颜色不匹配是什么意思。假设您的意思是交替行颜色,我会执行以下操作:
$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); }
答案 1 :(得分:1)
替换它:
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++;
}
每隔一行都会有灰色。
答案 2 :(得分:1)
$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;
}
以下是color names的列表。如果您想要更详细的颜色选择,请点击here。
答案 3 :(得分:1)
也许你可以在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 }
答案 4 :(得分:0)
使用
$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;
}