2012-04-13 18 views
0

セッション変数に格納されているColdFusionで配列を作成しようとしています。入力ページをアクションページに渡し、配列に格納するHTMLフォームがあります。しかし、私は問題を抱えています、主に配列を設定するときに、cfifを使って配列が定義されているかどうかをチェックしようとしましたが、うまくいきませんでした。ここでColdFusionを使用してフォーム入力をセッション変数内に格納する配列を作成する方法は?

は、HTMLフォームです:

<form name="input" action="html_form_action.cfm" method="post"> 
id <input type="text" name="id" /> 
<input type="submit" value="Submit" /> 
</form> 

ここでColdFusionコードです:

<cfapplication name="arrays" clientmanagement="Yes" sessionmanagement="Yes"> 

<cfif isDefined('form.id')> 
<cfset session.urlid = form.id> 


<cfset myArray = arrayNew(1)> 

<cfset session.arrData[(arrayLen(session.arrData)+1)] = #session.urlid#> 
</cfif> 


<cfloop array=#session.arrData# index="name"> 
<cfoutput> 
<form name="input"> 
item<input type="text" name="id" placeholder=#name#> 

</form> 
</cfoutput> 
</cfloop> 

それは、配列からすべてを削除するように私はどのように私ができるまた、未設定のセッションを思っていた、私はColdFusionのドキュメントを読んでいて、どうやってこれを行うことができないのか分かりません。私はこれをPHPでやったことがうまくいっていますが、ColdFusionの方が簡単だと感じましたが、リソースの不足がこれを困難にしていると思います。私はこれをどう動かすかについてのアドバイスを感謝します。おかげさまで

+0

達成しようとしていることは何ですか?私はここでユースケースを把握しようとしている私の脳を悩ましている。 – ale

+0

セッション内に格納されている配列に項目を追加しようとしています。そのため、新しい項目が番号または名前が追加されるたびに、セッションが設定されていない限り配列内のすべての項目が表示されます。私はColdFusionで苦労しています:( THanks! – deucalion0

+0

"myArray"を設定した後は、どこでも使用できずにsession.arrDataを操作することに失敗します。myArrayのポイントは何ですか? –

答えて

1

これはあなたがやろうとしているものであるように思えます。

<cfparam name="form.id" default="0"/> 
<cfset session.urlID = form.id/> 

<cfif NOT structKeyExists(session,'arrData')> 
    <cfset session.arrData = arrayNew(1)/> 
</cfif> 

<cfset arrayAppend(session.arrData,session.urlId)/> 

しかし、それでもなお少しです。このIDをセッションにURLIDとして格納しておき、arrDataのインデックスに(セッション内で)コピーします。 session.urlIDにプリミティブ値以上の値がある場合は、循環参照となるでしょう。まだ..私はあなたがしようとしている可能性のあるものだと思う。

+0

ありがとうございます。私はそれを試して、エラーを受け取りました: 変数ARRAYAPENDは未定義です。 理由は何ですか? THanks! – deucalion0

+0

上記のコードスニペットはうまくいきます。エラーが発生した場合は、それ以外の何かが間違っているためです。ごめんなさい。 –

+0

申し訳ありません... 2 "p"がappend ....でなければなりませんarrayAppend(... doh! –

1

あなたの最初の質問が正確であるかどうかは完全にはわかりませんが、私はそれをベストショットにします!

form.idが存在するかどうかわからないので、私は "cfparam"タグを調べます。 これは、action.cfmページの予想されるパラメータを定義します。

あなたが望むなら、form.id GT 0を確認できますか?

ColdFusionで配列を設定する場合は、ほとんどの場合です。 新しい配列を作成しました... しかし、配列の値ごとに整数を定義する必要はありません。 。 だけ使用します。セッション変数「未設定」については

<cfset arrayAppend(session.arrayVar,variableToAppend) /> 

を... ほとんどの人はちょうど私が私が何かを逃さなかった願ってい

<cfset structDelete(session,'arrData') /> 

を行う... あなたの場合他に何かが必要です - 私に知らせてください。

+0

こんにちは! 2行目のコードをどのように使用するのか分かりませんが、投稿したコードでどのコードを置き換えるのですか?ごめんなさいColdFusionで時折混乱します! deucalion0

+0

これは、配列内の次の利用可能な番号に要素を自動的に設定します。唯一の注意点は、配列が最初に定義されていることを確認することです。 ColdFusionのドキュメント、彼らは非常に便利です!http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec1a60c-7ffc.html#WSc3ff6d0ea77859461 172e0811cbec22c24-6a66 – Busches

+0

おかげさまで私はドキュメントを読みましたが、参考になりましたが、ColdFusionの初心者にとってはあまりにも多すぎます。私は配列を定義しようとしましたが、実際に動作させるのに苦労しました.ArrayIsDefinedを使って試しました。 ここに私のコードはありますが、あなたのsuggetionを正しく使っていますか?私は今、エラーを取得しています: 要素ARRDATAは、SESSIONで定義されていません。 マイコード:実際に有効な方 \t <のcfset MyArrayという= arrayNew(1)> \t deucalion0

0

フォームをセッションスコープに保存しようとしていますか? その場合は、 cfset session.formname = form のいずれかを実行するか、structcopy関数を使用してフォーム構造体をセッションにコピーするだけです。

これをクリアするには、structclear関数を使用します。 それはstructkeyexists(スコープ、「VAR」)CFIF を使用して存在しているかどうかを確認するために

第H

+0

あなたの助けていただきありがとうございます。理解していただければ幸いです。 ありがとうございます。 – deucalion0

関連する問題