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>";
}
?>
実行するとこんな感じ

送信後のフォームに前のデータが残るのは仕様です。
- 関連記事
-
-
PHP date関数で現在時刻を取得 2014/10/01
-
PHP printを略す書き方 2014/07/02
-
PHPでCSVファイルを読み書き 2013/11/23
-
PHP 画像うpフォーム 2011/04/19
-
PHP 画像をサムネイル表示 2011/04/18
-