【问题标题】:Styling rows in table that uses CSV data through PHP通过 PHP 对使用 CSV 数据的表中的行进行样式设置
【发布时间】:2009-11-20 03:23:11
【问题描述】:

我一直在研究这个将 CSV 文件放入漂亮表格的简单代码。但是因为数据是导入的,所以设置 ODD 行的样式是一件非常困难的事情。

我只需要一种方法来处理某些行,这样我就可以制作一个类似“斑马”的背景,并将特定数据放在另一种文本样式中。

你有什么想法吗?非常感谢!

<?php
print("<TABLE>\n");
$row = 0;
$handle = fopen("test_file.csv", "r");
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
   $num = count($data);
   for ($c=0; $c <= $row; $c++)
{
    print("<TR>");
    print("<TD>".$data[0]." </td>");
    print("<TD>".$data[1]." </td>");
    print("<TD>".$data[2]." </td>");
    print("<TD>".$data[3]." </td>");
    print("<TD>".$data[4]." </td>");
    print("</TR>"); 
}
}
fclose($handle);

?>

【问题讨论】:

    标签: php css csv


    【解决方案1】:

    有一个名为TableSorterjQuery 插件可以实现斑马风格的着色,还可以添加点击排序行的功能。它很容易集成。

    这不是一个纯粹的 PHP 解决方案,但在大多数情况下,您最终还是不得不编写 CSS 和 JavaScript 代码,因此这最终节省了大量时间并防止您对这些东西进行硬编码进入你的 PHP 逻辑。

    首先,您在文档的&lt;head&gt; 中链接脚本:

    <script type="text/javascript" src="/path/to/jquery-latest.js"></script> 
    <script type="text/javascript" src="/path/to/jquery.tablesorter.js"></script> 
    

    然后你确保你的表有&lt;thead&gt;&lt;tbody&gt; 元素:

    <table id="myTable"> 
    <thead> 
    <tr> 
        <th>Last Name</th> 
        <th>First Name</th> 
        <th>Email</th> 
        <th>Due</th> 
        <th>Web Site</th> 
    </tr> 
    </thead> 
    <tbody> 
    <tr>
        <td>...
    ...
    </tbody>
    </table>
    

    然后你用 jQuery 启用它:

    $(document).ready(function() 
        { 
            $("#myTable").tablesorter({ widgets: ['zebra'] }); 
        } 
    );
    

    【讨论】:

      【解决方案2】:

      怎么样

      print("<TR class='" . ($c%2 == 0?'even':'odd')."'>");
      

      添加适当的 CSS 之后

      .even {
        background-color: #aaaaaa; 
      }
      
      .odd {
        background-color: #fffff; 
      }
      

      【讨论】:

        【解决方案3】:

        使用类似的东西:

        <table>
        <tbody>
        <?php
        $row = 0;
        $handle = fopen('test_file.csv', 'r');
        while ($data = fgetcsv($handle, 1000, ',')):
          $class = ++$row & 1 == 1 ? ' class="odd"' : '';
          $num = count($data);
        ?>
        <tr<?php echo $class; ?>>
        <?php for ($c=0; $c <= $num; $c++) {
          <td><?php echo $data[$c]; ?></td>
        <?php endfor; ?>
        </tr>
        <?php endwhile; ?>
        </tbody>
        </table>
        <?php fclose($handle); ?>
        

        与:

        tr.odd td { background: #CCC; }
        

        或者用短标签(我个人更喜欢):

        <table>
        <tbody>
        <?
        $row = 0;
        $handle = fopen('test_file.csv', 'r');
        while ($data = fgetcsv($handle, 1000, ',')):
          $class = ++$row & 1 == 1 ? ' class="odd"' : '';
          $num = count($data);
        ?>
        <tr<?= $class ?>>
        <? for ($c=0; $c <= $num; $c++) {
          <td><?= $data[$c]; ?></td>
        <? endfor; ?>
        </tr>
        <? endwhile; ?>
        </tbody>
        </table>
        <? fclose($handle); ?>
        

        【讨论】:

        • 你有 for ($c=0; $c &lt;= $num; $c++) {endfor;
        猜你喜欢
        • 1970-01-01
        • 2016-07-17
        • 1970-01-01
        • 2020-07-03
        • 2021-07-30
        • 2019-11-05
        • 2011-06-07
        • 2021-12-09
        • 1970-01-01
        相关资源
        最近更新 更多