• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:配列を使ってWEB画面から一気にINPUTしたいのですが)

配列を使ってWEB画面から一気にINPUTしたいのですが

このQ&Aのポイント
  • 配列を使用してWEB画面から一気にデータを入力する方法を教えてください。
  • DBに15件のデータをまとめて入力する方法について教えてください。
  • 部署ごとに一括でデータを入力する方法を教えてください。

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

  • ベストアンサー
noname#1785
noname#1785
回答No.1

そこまで仕様が決まっているのであれば、そのまま作ればできると思いますけど。(笑) 15件の部分をどうSQLにセットすればいいかがわからないってことでしょうか? 一番簡単な方法でしたら、 1.15件の入力フィールドのそれぞれの名前を同じにする。  (例えば、Telを入力するフィールドは15件すべて"strTel"というNameを付ける) 2.全部がキチンと入力されているかを、JavaScriptでチェック 3.OKだったら、アクションページへSubmit 4.アクションページで変数を取得 5.取得した変数は、同じ名前だとカンマ区切りの変数になっているので、それをListToArray関数を使って配列化する。 6.配列のレングス分、SQLをループで回す。 という手順でしょうか? 1.で複数のテキストボックスに同じ名前を付けると、4.のところで取得する変数は Form.strHensu=1,2,3,4,5 という形の受け取りになるんですね。 ですので、その変数を配列化します。 リストを配列にするには、ListToArrayを使います。 上記の変数ですと、 <CFSET setArray=ArrayNew(1)> <--- 配列を作成 <CFSET setArray=ListToArray(Form.strHensu)> <--- 配列にセット とすると、setArrayという配列の中に、カンマ区切りの値が一つづつ格納されます。 そして、最後にSQLをこの配列分回してやればいいわけです。 <CFLOOP INDEX="i" FROM="1" TO="#ArrayLen(setArray)#">  <CFQUERY ~>    実行するINSERT SQL    この時、セットする変数を、    setArray[#i#]    で指定してあげればいいです。    外側を#でくくらなければいけないときはEvaluate関数を使います。    #Evaluate("setArray[#i#]")#  </CFQUERY> </CFLOOP> これで、15件分のデータを一気に書き込めます。 他のやり方もありますよ。 例えば、フォームの内容を書き出すときにすでに<CFLOOP>を使って、番号付きの名前のフィールドを自動生成して、SQLもそれをつかうとか。 ・・・って、文字で書くとややこしいですけど、こちらも簡単です。配列使わなくて済みます。 速度的には配列を使った方が早いかもしれないけど、15件程度なら大した差はないでしょう。 ちなみにもっと大量のデータであれば、既存のCSVファイルを作成して、<CFHTTP>タグを使ってファイル毎uploadって事もできます。 こちらの方法であれば、100件単位でも可能です。 (ただ、この方法を文章で教えろといわれても、できかねますが・・・。(^^;;) 参考URLにオンラインマニュアルのURLを載せておきます。 上記のタグも関数も載っていますので、参考になさってください。 がんばってくださいね~。

参考URL:
http://202.33.114.61/docs/CFML_Language_Reference/contents.htm
obahiro
質問者

お礼

ありがとうございます。 あれからとにかくこうしてみようと思って組んでいきましたら完成することができました。これからも、自分で考えた上で分からないことが出ましたら投稿させていただきますのでよろしくお願いします。 ほんとに、ありがとうございました。

obahiro
質問者

補足

お世話になっておりますm(_ _)m アドバイスいただきましたようにリファレンスをみながらがんばっているのですがいくつか、分からないところがありますのでよろしくお願いいたします。 (1)strTelというのがsabmitされたときにFORM.strHensuというのは、strTelに対応しているのでしょうか? (2)他の項目も同じ手順で繰り返してsetしていけばいいのでしょうか?同じようにしてみたりしたのですが、うまくいかず頭が爆発しそうです(><) できましたならば、cfloop間のロジックを私にでもわかるようにお願いしたいのですが・・・すみません、生意気いってm(_ _)m なにとぞよろしくお願いします。

すると、全ての回答が全文表示されます。

関連するQ&A