PHP ile CSV verileri kullanır tablo stil satırları

3 Cevap php

Ben güzel bir tabloya bir CSV dosyası koyar bu basit bir kod üzerinde çalışıyorum. Veri ithal çünkü Ama, ODD satırları stil yapmak için oldukça zor bir şeydir.

Tüm ihtiyacım address certain rows için bir yöntem olacaktır, bu yüzden arka plan gibi bir "zebra" yapmak ve başka bir metin tarzı, belirli verileri koyabilirsiniz.

Aynone bir fikir var mı? thanks a lot!

<?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);

?>

3 Cevap

Zebra tarzı boyama sağlar ve aynı zamanda click-to-tür satırları yeteneği ekler TableSorter adlı bir jQuery eklenti var. Bu entegre etmek çok kolaydır.

Bu saf PHP çözüm değil, ancak vakaların çoğunda her durumda CSS ve JavaScript kod sahip sonuna kadar gidiyoruz, bu yüzden çok zaman tasarrufu biter ve PHP içine şeyler sabit kodlama engeller mantığı.

Önce <head> belgenizin içinde komut bağlantı:

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

Sonra tablo <thead> ve <tbody> elemanları olduğundan emin olun:

<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>

Eğer jQuery ile etkinleştirmek sonra End:

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

ne

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

Eğer uygun CSS ekleyebilirsiniz sonra

.even {
  background-color: #aaaaaa; 
}

.odd {
  background-color: #fffff; 
}

Gibi bir şey kullanabilirsiniz:

<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); ?>

ile:

tr.odd td { background: #CCC; }

Ya da (Ben şahsen tercih ederim) kısa etiketleri:

<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); ?>