CSVから読み取ったデータをPHPでHTMLテーブルに表示
解決したいこと
CSVから読み取ったデータをPHPでHTMLテーブルに表示したいです。
foreachやfor文を使って試してみたのですが、
CSVの一段目しか表示されず、二段目以降の表示ができません。
CSVの内容を全て表示するためにはどのようにすれば宜しいかお教えください。
発生している問題・エラー
index.php
<html>
<head>
<title>CSV file to HTML table </title>
<link rel="stylesheet" type="text/css" href="styling.css">
</head>
<body>
<?php
main::start("example.csv");
class main {
static public function start($filename) {
$records = csv::getRecords($filename);
$table = html::generateTable($records);
}
}
class html {
public static function generateTable($records) {
for ($i=1; $i > 0 ; $i++) {
echo "<table width=''>" ;
foreach ($records[0] as $tableHeadings => $values) {
echo "<tr>";
echo "<th>$tableHeadings</th>";
echo "<td>$values</td>";
echo "</tr>";
}
echo "</table>";
}
}
}
class csv {
static public function getRecords($filename) {
$file = fopen($filename,"r");
$fieldNames = array();
$count = 0;
while(! feof($file))
{
$record = fgetcsv($file);
if($count == 0) {
$fieldNames = $record;
} else {
$records[] = recordFactory::create($fieldNames, $record);
}
$count++;
}
fclose($file);
return $records;
}
}
class record {
public function __construct(Array $fieldNames = null, $values = null )
{
$record = array_combine($fieldNames, $values);
foreach ($record as $property => $value) {
$this->createProperty($property, $value);
}
}
public function returnArray() {
$array = (array) $this;
return $array;
}
public function createProperty($name, $value) {
$this->{$name} = $value;
}
}
class recordFactory {
public static function create(Array $fieldNames = null, Array $values = null) {
$record = new record($fieldNames, $values);
return $record;
}
}
?>
</body>
</html>
styling.css
body, html {
height: 50%;
margin: 0;
padding: 0;
}
table {
border-collapse: collapse;
border-spacing: 0;
width: 50%;
border: 2px solid darkslategray;
}
th, td {
text-align: center;
padding: 10px;
border: 1px solid darkslategray;
}
th{
background-color: bisque;
}
td{
background-color:whitesmoke;
}
自分で試したこと
for文の使い方がうまくいきません。
使い勝手のいいfor文で制作を進めております。
HTMLで表示するとCSVテーブルの二段目以降が表示されず
一段目のみが表示され続けた上で無限ループに入ってしまいます。
解決策をご教授ください。宜しくお願いいたします。
0