夏が終わったと感じる瞬間って、どんな時?

現在以下のようなものを作っています。
1)csvファイル(内容は id,url,name )からデータを読み込み、
2)フォーム内のテキストフィールドに表示、
3)新規登録フォームからcsvのラストに1行増やす。
ここまではできたのですが、

4)テキストフィールドに読み込んだCSVデータの一部を修正する
というのはどうすればいいのでしょうか?
現在、
$fp = fopen("link.csv", "r");
while ($linkdata = fgetcsv($fp, 1000, ',')){
list($a, $b, $c) = $linkdata;

}で、
<input name="id" type="text" value="$a"><input name="id" type="text" value="$b"><input name="id" type="text" value="$c">
こんな感じで表示されています。
チェックした行を削除というのと、
表示されたテキストフィールドの中を書き換えてsubmitで更新というのを作りたいのですが…

A 回答 (2件)

一行ずつ読み込むサンプルを作ったので、この方法を応用すれば目的の処理ができるはずです。


頑張ってください。


<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
<title>sample</title>
</head>
<body>
<?php
for($idx=0;!is_null($_POST["id".$idx]);$idx++) {
var_dump($_POST["id".$idx]);
var_dump($_POST["url".$idx]);
var_dump($_POST["name".$idx]);
echo "<br>";
}
?>
<form name="form1" method="post" action="dim.php">
<input type="text" name="id0" value="aa"><input type="text" name="url0" value="bb"><input type="text" name="name0" value="cc"><br>
<input type="text" name="id1" value="dd"><input type="text" name="url1" value="ee"><input type="text" name="name1" value="ff"><br>
<input type="submit" name="Submit" value="送信">
</form>
</body></html>
    • good
    • 0

削除の手順は


1.テキストファイルを読み込む
2.削除したい行を除いてテキストファイルに上書き

書き換えの手順は
1.テキストファイルを読み込む
2.変更したい行を編集してテキストファイルに上書き

CSVファイルの件数が多くないなら、一度配列に全部入れちゃうのが楽だろうし。
CSVファイルの件数が多いなら中間ファイルを作って一件づつ処理するのがいいでしょう。

この回答への補足

<input name="id" type="text" value="$a"><input name="id" type="text" value="$b"><input name="id" type="text" value="$c">
がCSVの行数分だけ並んでいるので、
それを全部POSTして、配列に入れて、1行ずつcsvに戻して上書き保存するんだろうなぁということは見当が付くのですが、
こんなにたくさんあるフォームの$_POST[**]をどうやって1つずつCSVに戻せばいいのか分からないというか…

フォームが1行分なら、新規登録で
<form action="file.php" id="FORM1" method="post" NAME="FORM1">
<input name="id" type="text"><input name="url" size="100" /><input name="name" size="30" />
<br /><INPUT id=submit1 NAME=submit1 type=submit value=" 実行 "><INPUT id=reset1 NAME=reset1 type=reset value="リセット"></form>

<?php
$id = $_POST['id'];
$url = $_POST['url'];
$name = $_POST['name'];

$data = "\n".$id.",".$url.",".$name;

if ($data) {
$fp = fopen('link.csv', 'a');
fputs($fp, $data);
fclose($fp);
}
?>
というのを書いたので、これでできるのですが…

補足日時:2006/03/03 15:32
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!