PHPでフォームに表示させたCSVを更新する方法

このQ&Aのポイント
  • PHPを使ってフォームに表示させたCSVファイルを更新する方法について教えてください。
  • 現在、PHPで作成したフォームにCSVファイルからデータを読み込み、テキストフィールドに表示しています。しかし、テキストフィールドの内容を修正し、更新する方法がわかりません。どうすれば良いでしょうか?
  • フォームに表示されたCSVデータの一部を修正し、更新する方法について教えてください。
回答を見る
  • ベストアンサー

PHPでフォームに表示させたCSVを更新したい

現在以下のようなものを作っています。 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で更新というのを作りたいのですが…

  • PHP
  • 回答数2
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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>

その他の回答 (1)

回答No.1

削除の手順は 1.テキストファイルを読み込む 2.削除したい行を除いてテキストファイルに上書き 書き換えの手順は 1.テキストファイルを読み込む 2.変更したい行を編集してテキストファイルに上書き CSVファイルの件数が多くないなら、一度配列に全部入れちゃうのが楽だろうし。 CSVファイルの件数が多いなら中間ファイルを作って一件づつ処理するのがいいでしょう。

InabaHitomi
質問者

補足

<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); } ?> というのを書いたので、これでできるのですが…

関連するQ&A

  • phpのCSVの保存について教えてください

    下記のようにinputタグから値をphpにおくり、csvファイルに保存しようとしています。 値1に12345 値2に67890 値3にあいうえお というように値を送って保存し、csvファイルを開くと、 12345," 67890",あいうえお というように、値2として送ったものの先頭にダブルコーテーションとスペース、最後にダブルコーテーションが勝手に入ってしまいます。なぜ何でしょうか?対処法も含め教えていただければありがたいです。よろしくお願いします。 --------------------html---------------------------------- <form action="send.php" method="post"> 値1:<input type="text" name="aaa" > 値2:<input type="text" name="bbb" > 値3:<input type="text" name="ccc" > <input type="submit" value="送信する"> </form> --------------------php---------------------------------- <?php $val[0] = $_POST['aaa']; $val[1] = $_POST['bbb']; $val[2] = $_POST['ccc']; $fp = fopen("valdata.csv", "a"); fputcsv($fp, $val); fclose($fp); ?>

    • ベストアンサー
    • PHP
  • ブログフォームが表示されない!

    いつも大変お世話になり誠にありがとうございます。 標記の件。 form.htmlだと表示はされます。 しかし、その後のインプットの表示がされません。 index.phpでOKだったのですが、ソースコードが 表示されるようになってしまいました。 index.phpのソースコードは下記です。 どこが間違っているのでしょうか? ご回答のほど宜しくお願い申し上げます。 <?php if( $mode=='input'){ ?> <h2>ブログフォーム</h2> <form action="blog_create.php" method=_POST> <input type="text" name="address" value="" /> <input type="text" name="name" value="ペンネーム"/> <input type="text" name="title" value="タイトル"/> <input type="text" name="name" value="カテゴリー"/>   <textarea name="content" id="content" cols="50" rows="80">ブログ本文</textarea><br> <input type="submit" value="確認画面へ"> </form>

    • ベストアンサー
    • PHP
  • ■フォームのテキストで書かれた数字を受け取るにはどうすればいいのでしょうか?

    HTML内で <form> <input type="text" name="a" value="a"> <input type="button" name="b" value="b" onClick="zzz()"> <input type="text" name="c" value="c"> </form> 外部JavaScript内で function zzz() {  フォームのテキストaの中に打ち込んだ数字を受け取って、テキストcの中に表示させる関数 } 上記のようなことをしたいのですが(意味がないと言われてしまえばそうです^^;)やり方を教えていただけないでしょうか? あと、フォームの内容がよくわからないので、勉強できるサイトなどありましたら教えていただけないでしょうか? 現在わかっているのは、typeが形を作るってことと、onClickがボタンを押したときのことっていうだけです。 name valueとかまったく意味不明です。 最後に、ボタンをマウスでクリックしなくてもエンターキーを押すだけでクリックしたことになる方法を教えていただければ幸いです。 よろしゅうお願いします!

  • フォームに表示される文字をセンタリングさせたい。

    Javascriptの初心者です。宜しくお願いします。 テキストエリアが2つあったとします。 1のテキストエリアにある値を入力してボタンを押すと、 2のテキストエリアに1で入力した値をそのまま表示させ、 尚且つ表示された値をフォーム内でセンタリングさせたいのですが どうすればよいのかわかりません・・・。 ご存知の方がいらっしゃいましたら教えて下さい。 どうぞ宜しくお願い致します。 <html> <head> <script language="JavaScript"> <!-- function my1() { a=document.form1.text1.value; document.form1.text2.value=a; } //--> </script> </head> <body> <form name="form1"> <input type="texterea" name="text1"> <input type="texterea" name="text2"> <input type="button" value="CLICK!" onClick="my1()"> </form> </body> </html>

  • フォームの一部をPOSTで送信できますか?

    フォームのPOST自体をあまり理解できていないかも知れないのですが・・・ onClickイベントでJavascriptでパラメータを送信したいと思っています。 <input type="text" name="text1"> <input type="text" name="text2"> <input type="text" name="text3"> <input type="text" name="text4"> <input type="text" name="text5"> <input type="button" value="ボタン1"> <input type="button" value="ボタン2"> <input type="button" value="ボタン3"> というようなフォームがあった場合、ボタン1を押したらtext1とtext2の値を、 ボタン2を押したらtext1とtext3の値を・・・という風に 送信する内容を変えたいのですが、それをPOSTで渡すことは可能なのでしょうか? ちなみに送信したい内容は、ボタンが違っても重なっているものもあります。 また可能であれば、どう記述すればよろしいでしょうか?(NNです) よろしくお願いします。

  • PHPでフォーム作成

    テキストボックス、ラジオボタン、チェックボックスをHTMLで作成し、ユーザーが選択した値をPOSTで受け取り、 表示するプログラムを作成するとどのようになるか教えてください。 <?php // 送信ボタンがクリックされた場合の処理 if ($_SERVER['REQUEST_METHOD'] === 'POST') { } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>フォーム</title> </head> <body> <h1>フォーム</h1> <form method="post"> <p>お名前: <input id="my_name" type="text" name="my_name" value=""></p> <p>性別: <input type="radio" name="gender" value="man">男 <input type="radio" name="gender" value="woman">女</p> <p><input type="checkbox" name="mail" value="OK">お知らせメールを受け取る</p> <input type="submit" name="submit" value="送信"> </form> </body> </html>

    • ベストアンサー
    • PHP
  • PHPでtxtを読み込みフォームに入力したい

    現在、自分で使う用のちょっとしたフォームを習作ですが作りました。 タイトルとURLを入れて保存しておくようのものです。 タイトルを入れるinput、URLを入れるinputの2つセットが、10組くらい並んでいます。 フォームと保存先のDB自体はちゃんと動いているので良いのですが、 例えば10サイト登録しようと思うとタイトルをコピペ、URLをコピペ~って作業を20回することとなり 結構面倒くさいことに気づいたので テキストファイルにどんどんコピペして保存し、 そのテキストファイルを読み込んで一気にフォームを入力しようと考えました。 テキストファイルへのコピペはBookmarkletで簡単にURL,TITLEとカンマ区切りでコピーするものを作りましたので あとはそのテキストファイルをうまくフォームに入れたいのですが方法が分かりません。 PHPのページで中身を表示することは出来ました。 fopenやfgetsを使い1行ずつ取り出すことも可能です。 その取り出した文字列を、10カ所のフォームに埋めれるだけ埋めたいのです。 ただしそのフォームは既に2~3個など埋まっている可能性もあるので、 「何も入力されていない空のフォームにテキスト(文字列)をはめ込む」 というのはどうすればいいんでしょうか? フォームは <table class="form-table"> <tr valign="top"> <th scope="row">1. <label for="inputtext">Title</label></th> <td><input name="hoge[0][0][title]" type="text" id="inputTitle1" value="<?php echo $hoge[0][0][title] ?>" class="regular-text" /></td> </tr> <tr valign="top"> <th scope="row">1. <label for="inputtext">URL</label></th> <td><input name="hoge[0][0][url]" type="text" id="inputUrl1" value="<?php echo $hoge[0][0][url] ?>" class="regular-text" /></td> </tr> ~~~~~~~~~~~~ ~~~~~~~~~~~~ </table> こんな感じです。 valueには、前回保存したものが入ります(なので埋まっている可能性があるのです) 分かりづらいかもしれませんが、よろしくおねがいします。

    • 締切済み
    • PHP
  • PHPでcsvファイルを一覧表示するにはどうすれば良いのでしょうか?

    <?php //ファイルを開く $fp = fopen('maillog.csv', 'r') or die('ファイルが開けません'); //テーブルを出力 echo '<table border="1">'; while ($field_array = fgetcsv($fp, 10000, ',', '"')) { echo '<tr>'; foreach ($field_array as $value) { echo '<td>'.htmlspecialchars($value, ENT_QUOTES).'</td>'; } echo '</tr>'; } echo '<table>'; //ファイルを閉じる fclose($fp); ?> プログラムだと、全ての項目が表示されてしまうので 少ない項目(3~4つ)で表示できるにはどうすれば良いのでしょうか? また、各項目毎のタイトルも付けたいのですが お願いします。

    • 締切済み
    • PHP
  • PHPでフォームからの送信

    PHPでフォームからデータを送信する方法について教えてください。例えばPHPファイルの中に下の様にフォームを作成して、送信ボタンを2つ作ります。一つのボタンをクリックすると全てのフォームの情報が送信されてしまいますが、独立して送信できるようにはできないのでしょうか。簡単にでもできるかできないかを教えていただけましたら、あとは自分でなんとかがんばりますので、どなたか教えていただけれますと幸いです。宜しくお願いします。 <form action="abc.php" method="post"> AAA:<input type="text" name="simei"> BBB:<input type="password" name="pass"> <input type="submit" value="送信"> </form> <form action="abc.php" method="post"> CCC:<input type="text" name="simei"> DDD:<input type="text" name="pass"> <input type="submit" value="送信"> </form>

    • ベストアンサー
    • PHP
  • フォームに入力後、別のフォームに値を表示

    すみません。教えて頂けないでしょうか?(初心者です) <input type="text" name="a" id="aaa" size=20>  ↓ <input type="text" name="b" id="bbb" size=20>  ↓ <input type="text" name="c" id="ccc" size=20>  ↓ このような感じで作成し、aとbのフォームに値が何か 入力されたら自動的に、例えばaとbの値を足してcのフォームに その結果を表示する様にしたいのですが、記述の仕方が なかなか見つけられません。

    • 締切済み
    • PHP

専門家に質問してみよう