• 締切済み

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には、前回保存したものが入ります(なので埋まっている可能性があるのです) 分かりづらいかもしれませんが、よろしくおねがいします。

みんなの回答

  • agunuz
  • ベストアンサー率65% (288/438)
回答No.3

>name属性値とvalue値が同じというのはそんなに変なことなんでしょうか? はい。ヘンです。受け取ってから、どう処理するんですか?また「今から入力する」空のinput要素はどういうname属性値にするんですか(それが既存のtitleと重複しない保証はありますか?)。 「置換だけ」なら   foreach ($_POST as $key=>$val) {     // $keyが置換元の文字列、$valが置換する文字列   } でいいので何とかなるでしょう(それでも置換元文字列に制限がかかるので「やるべきではない」と思います)。

  • agunuz
  • ベストアンサー率65% (288/438)
回答No.2

>恐らくファイルからのテキスト読み込みと同時にフォームを埋めるというのは >JSを使わないと無理っぽいですね。 いえ。基本的にサーバ側にデータがあるのですからサーバ側で可能です。 キチンと設計すれば内容的にはそれほど難しくないハズです。前述したname属性値の件(name属性値からどのinput要素かがわからない)といい「どこで何をやればいいか」がわからないまま仕様を決めている(というか仕様がはっきりしないままソースを書いている)ように思えます。

man_ahoaho
質問者

補足

name属性値とvalue値が同じというのはそんなに変なことなんでしょうか? http://foreignkey.jp/archives/267 ここの最後のほうにもあるように <tr> <th><label for="moji_changer_vars[from]">置き換えする文字</label></th> <td><input id="moji_changer_vars[from]" type="text" name="moji_changer_vars[from]" value="<?php echo isset($moji_changer_vars['from']) ? $moji_changer_vars['from'] : '' ?>" /></td> </tr> これと同じことをしているつもりでした。。

  • agunuz
  • ベストアンサー率65% (288/438)
回答No.1

>valueには、前回保存したものが入ります(なので埋まっている可能性があるのです) データベースから読み込みながらvalue属性をセットしているのですよね?それが終わったら(レコードがなくなったら)ファイルから読み込んだものをセットしていけばいいのでは? というか、ファイルをアップロードするのであれば、フォームなど介さずにそのままファイルからデータベースに「追加」すればいいのでは(テーブル定義がわからないので何ともアレですが・・・)。 ><input name="hoge[0][0][title]" type="text" id="inputTitle1" value="<?php echo $hoge[0][0][title] ?>" class="regular-text" /> name属性とvalue属性に同じ値をセットして、受け取った側ではどう処理しているんでしょうか。ちょっとどう処理しているのか想像出来ません(titleとurlの区別も面倒ですよね)。

man_ahoaho
質問者

お礼

ちょっとやっぱり設計段階から使いづらい仕様になってしまってたので 一旦破棄して作り直します。 恐らくファイルからのテキスト読み込みと同時にフォームを埋めるというのはJSを使わないと無理っぽいですね。 PHPだけでいけるのかな~?という単純な質問だったのですがややこしくすみません。 ありがとうございました。

man_ahoaho
質問者

補足

>name属性とvalue属性に同じ値をセットして、受け取った側ではどう処理しているんでしょうか。 フォームで送信したあとも、フォームの入力欄に同じモノが残るようにしています。 今どんなURLとタイトルがこのフォームに入ってるか、というのを分かりやすくしています。 テーブルは1つのフィールドに配列でデータを詰め込んでいます。 (ちょっと特殊かもしれませんが環境の制限でこうなりました) hoge[0][0][title]とhoge[0][0][url]がセットで hoge[0][1][title] hoge[0][1][url]~と続き hoge[0][9][title] hoge[0][9][url]全部で10組あります。 3次元にしているのは、 hoge[1][0][title] hoge[1][0][url]~ hoge[2][0][title] hoge[2][0][url]~とそのフォーム自体を増やす予定があるからです。 先に言っておけば良かったのですが、これの使い道は自分がフォームでそうやって保存しておいたタイトルとURLを後から取り出してHTMLでリンク出力が目的です。 10個ずつのリンク群を管理しておくことが目的ですね。 >フォームなど介さずにそのままファイルからデータベースに「追加」すればいいのでは それでも上記の目的は達成出来ると思いますが、管理も目的の1つなので 今どんなのを登録しているかを見られて、それを見ながら入れ替えたり入力が出来るインターフェイスが欲しかったのです。 それにはフォームが良いかなぁと思ったのですが、思ったより入力が面倒だったので リンク集めだけは別でやって、テキストファイルに保存し それをPHP上のフォームの横などに表示させた上でフォームを埋めたり入れ替えたり っていうのが簡単にできるようにならないかと思い挑戦しているところです。 欲を言えばクリックやドラッグで入れ替えれたら良いですがそこまでの技術はないので。 とりあえずテキストファイルを読み込んで、その中身を読み込みと同時にフォームを埋める、ということが出来ないものかなと思いました。

関連するQ&A