从 mysql 打印的每隔一行应该是彩色的

Posted

技术标签:

【中文标题】从 mysql 打印的每隔一行应该是彩色的【英文标题】:Every second row printed from mysql should be colored 【发布时间】:2012-07-19 17:06:18 【问题描述】:

我在我的 wordpress 网站上有一个联系表格,它是 mysql 的数据,也可以通过邮件发送。我目前正在开发一个简单的 wep 应用程序,它只是从数据库中读取数据并打印出来。为了更容易在移动设备上阅读,我希望从数据库打印的每一行都是灰色的,每一秒都是白色的。正如您从代码中看到的那样,我尝试了这个但失败了。所以我希望它看起来像这样: http://i49.tinypic.com/20fbvdi.png 这是代码:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Yhteydenottopyynnöt</title>
<style>
bodywidth:100%;
.anotherrowbackground-color:#f1f;
</style>
</head>

<body>
<?php
$con = mysql_connect("localhost","user","pass");
if (!$con)
  
  die('Could not connect: ' . mysql_error());
  

mysql_select_db("database", $con);

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

echo "<table border='1'>
<tr>
<th style='width:10%;'>ID</th>
<th style='width:10%;' class='anotherrow'>Nimi</th>
<th style='width:10%;'>Puhelin</th>
<th style='width:10%;' class='anotherrow'>Sposti</th>
<th style='width:40%;'>Viesti</th>
<th style='width:10%;' class='anotherrow'>P&auml;iv&auml;</th>
<th style='10%;'>IP</th>
</tr>";

while($row = mysql_fetch_array($result))
  
  echo "<tr>";
  echo "<td style='width:10%;'>" . $row['ID'] . "</td>";
  echo "<td style='width:10%;' class='anotherrow'>" . $row['Nimi'] . "</td>";
  echo "<td style='width:10%;'>" . $row['Puhelin'] . "</td>";
  echo "<td style='width:10%;' class='anotherrow'><a href='mailto:" . $row['Email'] . "'>" . $row['Email'] . "</a></td>";
  echo "<td style='width:40%;'>" . $row['Viesti'] . "</td>";
  echo "<td style='width:10%;' class='anotherrow'>" . $row['Day'] . "</td>";
  echo "<td style='width:10%;'>" . $row['IP'] . "</td>";
  echo "</tr>";
  
echo "</table>";

mysql_close($con);
?>
</body>
</html>

请不要对代码做噩梦,它对我来说已经足够有效了,而且我是唯一一个使用网络应用程序的人 :)

【问题讨论】:

【参考方案1】:

为什么不采用更现代的方法并使用 CSS3 选择器?

tr:nth-child(even)  background: #f1f; 

有关兼容性状态,请参阅 here 和 here。

【讨论】:

就像我说的,我将是唯一使用它的人,依此类推。而且我手机的浏览器支持它,所以非常适合我。【参考方案2】:

在你之前创建一个迭代计数器。

$i = 0;
while($row = mysql_fetch_array($result))

然后如果$i 是偶数,应用一种颜色,如果是奇数,应用超过一种。

if ($i % 2 == 0) 
  echo "<tr class='firstColor'>";
 else 
  echo "<tr class='secondColor'>";

while 结束之前迭代您的变量。 $i++

【讨论】:

只需使用if($i++ % 2) - 这样它会在比较后自行增加,而您不需要在循环结束时使用$i++【参考方案3】:

试试这个;

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Yhteydenottopyynnöt</title>
<style>
bodywidth:100%;
.anotherrowbackground-color:#f1f;
</style>
</head>

<body>
<?php
$con = mysql_connect("localhost","user","pass");
if (!$con)
  
  die('Could not connect: ' . mysql_error());
  

mysql_select_db("database", $con);

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

echo "<table border='1'>
<tr>
<th style='width:10%;'>ID</th>
<th style='width:10%;'>Nimi</th>
<th style='width:10%;'>Puhelin</th>
<th style='width:10%;'>Sposti</th>
<th style='width:40%;'>Viesti</th>
<th style='width:10%;'>P&auml;iv&auml;</th>
<th style='10%;'>IP</th>
</tr>";

$count = 0;
while($row = mysql_fetch_array($result))
  
  echo "<tr".((($count%2) == 0)?"":" class='anotherrow'").">";
  echo "<td style='width:10%;'>" . $row['ID'] . "</td>";
  echo "<td style='width:10%;' class='anotherrow'>" . $row['Nimi'] . "</td>";
  echo "<td style='width:10%;'>" . $row['Puhelin'] . "</td>";
  echo "<td style='width:10%;' class='anotherrow'><a href='mailto:" . $row['Email'] . "'>" . $row['Email'] . "</a></td>";
  echo "<td style='width:40%;'>" . $row['Viesti'] . "</td>";
  echo "<td style='width:10%;' class='anotherrow'>" . $row['Day'] . "</td>";
  echo "<td style='width:10%;'>" . $row['IP'] . "</td>";
  echo "</tr>";
$count++;
  
echo "</table>";

mysql_close($con);
?>
</body>
</html>

【讨论】:

不,没有给正确的上色。我需要每隔一条水平线着色一次。每隔一列着色:D Nop :) 是行,而不是列 :) 我进行了编辑以在第二行开始颜色。 差不多。如果我解释正确的话,现在每一秒行都是彩色的,每一秒的每一行都是彩色的。 【参考方案4】:

一个非常简单的解决方案是为奇数和偶数创建 2 个简单的 CSS 类。并在其中定义单独的背景颜色。然后使用以下代码完成您的工作:

$j=0;
if(!($j%2)) 
            $cssClass = 'odd';
          else 
            $cssClass = 'even';
         
         $j++;

<tr class=<?php echo $cssClass; ?> > Data </tr>

有点像这样。

【讨论】:

以上是关于从 mysql 打印的每隔一行应该是彩色的的主要内容,如果未能解决你的问题,请参考以下文章

如何让 Perl 和 Python 打印正在执行的程序的每一行?

从 Makefile 规则打印粗体或彩色文本

从彩色背景中提取黑色对象

如何在clojure中的每一行打印数字列表?

如何让 Perl 和 Python 打印正在执行的程序的每一行?

使用 while-read 命令的每一行打印变量