我想做样式表,但它在PHP中不起作用

时间:2013-12-14 10:47:38

标签: php record styling

我想创建一个站点,该站点显示数据库中的大量记录。为了使它更易于读者阅读,我想使用一种造型。一个记录是白色背景,下一个是蓝色,下一个是hhite。

所以我尝试了这个:

<?php while ($info = mysql_fetch_array($data)){
PRINT "<tr>";
PRINT "<td>"  .$info['articlenr']. "</td>";
PRINT "<td>"  .$info['stock']. "</td>";
PRINT "</tr>";
PRINT "<tr>";
PRINT "<td bgcolor=#0066FF>"  .$info['articlenr']. "</td>";
PRINT "<td bgcolor=#0066FF>"  .$info['stock']. "</td>";
PRINT "</tr>";
}
?>

这适用于视图,但问题是,蓝色记录与白色相同,而不是下一个,它只是将记录加倍并使其成为另一种颜色。

我该怎么做?

4 个答案:

答案 0 :(得分:1)

使用:nth-of-type(even)获取偶数/奇数颜色组合。

这是一个演示示例:

HTML:

<table>
<tr><td>item1</td>
</tr>
<tr><td>item2</td>
</tr>
<tr><td>item3</td>
</tr>
<tr><td>item4</td>
</tr>
</table>

的CSS:

tr:nth-of-type(even) { background-color: #0066FF; }

Demo

答案 1 :(得分:1)

如果你想在PHP中这样做,你可以这样做:

<?php 
$iter = 0;
$color1 = 'red'; //can se hex code too, like #0066FF;
$color2 = 'blue';

while ($info = mysql_fetch_array($data))
{
    echo '<tr style="background-color:'.( ($iter%2==0) ? $color1 : $color2).';">';
    // rest of the printing stuff
    $iter++;
}
?>

声明

($iter%2==0) ? $color1 : $color2

这样做:它询问迭代器(或行号)是否均匀的问题。如果是,则需要color1。如果不是(行不均匀),则采用第二种颜色。

PHP Smarty适合做这种事情(迭代颜色和样式),但初学者可能很难。

答案 2 :(得分:0)

答案 3 :(得分:0)

我可以就您的代码提供一些建议吗?您的方法混合了PHP和HTML,使您的开发环境难以解析HTML,并且您可以通过更少的击键来实现相同的功能!请考虑这种方法:

<?php while ($info = mysql_fetch_array($data)): ?>
    <tr>
        <td><?php echo $info['articlenr'] ?></td>
        <td><?php echo $info['stock'] ?></td>
    </tr>
<?php endwhile ?>

我所做的改变:

  • 删除了重复的行
  • 以HTML模式呈现所有内容,并仅为PHP代码打开PHP标记
  • 将循环切换为冒号形式,这通常被认为在模板中更清晰。但是,在大块代码(例如类)
  • 中继续使用大括号方法
  • 小写的PHP关键字
  • 使用echo而不是print

将此与Joke_Sense10的答案相结合,以获得完整的解决方案。