PHPでCSVファイルを読み書き

/ PHP / Comment[0]
CSVを編集する簡単なフォームを作ってみたメモ
<table border="1">
<tr>
<th>カラム1</th>
<th>カラム2</th>
<th>カラム3</th>
</tr>
<form action="" method="post">
<?php
//ファイル指定
$csvFile = 'slider.csv';
$tempCSV = file_get_contents($csvFile);

//UTF-8にエンコード
$tempCSV = mb_convert_encoding($tempCSV, 'UTF-8', 'auto');
$fp = tmpfile();
fwrite($fp, $tempCSV);
rewind($fp);
setlocale(LC_ALL, 'ja_JP.UTF-8');

//3x6のフォームを作る
for ($n = 1; $n <= 6; $n++) {
$arr = fgetcsv($fp, 1024); //1行読み取る
list($url, $img, $id) = $arr; //それぞれの値を代入
echo "<tr><td><input type='text' name='url$n' size='30' value='$url'></td>";
echo "<td><input type='text' name='img$n' size='30' value='$img'></td>";
echo "<td><input type='text' name='id$n' size='8' value='$id '></td>";
echo "</tr>";

}
echo "</table><input type='submit'><hr/>";

//POSTデータがある場合
if (@$_POST) {
$fp = fopen($csvFile, 'w'); //書き込みモードでCSVファイルを開く
flock($fp, LOCK_EX); //排他ロック
for ( $i = 1; $i <= 6; $i++) {
$col1 = mb_convert_encoding($_POST["url$i"], 'UTF-8', 'auto');
$col2 = mb_convert_encoding($_POST["img$i"], 'UTF-8', 'auto');
$col3 = mb_convert_encoding($_POST["id$i"], 'UTF-8', 'auto');
$data = array($col1, $col2, $col3); //データを連結
$data = implode(',', $data) . "\n"; //,で区切り改行を追加
$view .= $data . "<br/>";
fputs($fp, $data); //書き込み
}
fclose($fp); //ファイルを閉じる
echo "$view<hr/><a href=''>リロード</a>";
}
?>

実行するとこんな感じ


送信後のフォームに前のデータが残るのは仕様です。
関連記事

コメント

:
:
:
:
:
管理人のみ表示を許可