0

多分初心者の質問をして申し訳ありません & 私の英語で申し訳ありませんが、私はこの仕事を得ることができないようです (私はこれを開発しませんでした)。

Coldfusion には 3 つの選択ドロップダウン ボックスがあります。最初のドロップダウン State は、データベースのオンロードによって設定されます。

 <cfquery name="qState" datasource="#Variables.fw.Config.DSN#">
    SELECT * from refState WHERE State = '#url.BindID#' AND status = 'Active' order by ldesc
</cfquery>

<select name="State">
                <option value="" <cfif isDefined("url.PrevID") and #url.PrevID# EQ "">selected</cfif>></option>
                <cfoutput query="qState">
                    <option value="#qState.State#" <cfif isDefined("url.PrevID") and #url.PrevID# EQ #qState.State#>selected</cfif>>#qState.Ldesc#</option>
                </cfoutput>
            </select>

次に、選択した値を 2 番目のドロップダウンである City に渡します。

<cfdiv id="City" bind="url:index.cfm?section=public&action=City&txtReff=#txtReff#&BindStateID={State}&PrevCityID=#txtCity#">

州の下にある都市を取得するクエリ:

<!--- loop to fix the state, returns the correct value even though i hav limited knowledge on this --->
    <cfset num = 0>
    <cfloop index="i" list="#url.BindStateID#" delimiters=",">
        <cfset num = #num# + 1>
        <cfif #num# EQ 2>
            <cfset p = #i#>
        </cfif>
    </cfloop>

<!--- then the query to get cities under the state --->
    <cfquery name="qCity" datasource="#Variables.fw.Config.DSN#">
        SELECT * from refCity WHERE State = '#p#' AND status = 'Active' order by ldesc
    </cfquery

>

そして最後に選択する都市を表示します

<select name="City">
                <option value="" <cfif isDefined("url.PrevCityID") and #url.PrevCityID# EQ "">selected</cfif>></option>
                <cfoutput query="qCity">
       <option value="#qCity.City#" <cfif isDefined("url.PrevCityID") and #url.PrevCityID# EQ #qCity.City#>selected</cfif>>#qCity.Ldesc#</option>

                </cfoutput>
            </select>

問題は、これが IE6、7、および 8 でのみ機能することです。Chrome、IE 9 以降、および firefox では機能しません。

どんな助けでも大歓迎です。ありがとう

4

1 に答える 1

0

SQL インジェクションから保護するためにタグを追加し、## を含む余分なタグを削除しました。代わりに cfif ステートメントは必要ありません。

また、ステート エリアには、ちょっと変わったループがありました。選択ドロップダウンボックスが1つしかないように見えるため、変数は1つしかありませんが、複数の変数があり、2番目の値を取得しているかのようにループしていました。私はそれを理解できず、あなたのコードはおそらくその場所で間違っていると感じました。

コードを次のように変更することをお勧めします。

 <!--- Personal Preference --->
 <cfparam name="url.prefid" default="">

 <cfquery name="qState" datasource="#Variables.fw.Config.DSN#">
    SELECT * from refState 
    WHERE State = <cfqueryparam cfsqltype="cf_sql_varchar" value="#url.BindID#">
          AND status = 'Active' 
    order by ldesc
</cfquery>

<select name="State" id="State">
    <option value="" <cfif trim(url.PrevID) eq "">selected</cfif>></option>
    <cfoutput query="qState">
      <option value="#qState.State#" <cfif trim(url.previd) eq qState.State>selected</cfif>>#qState.Ldesc#</option>
    </cfoutput>
</select>

そして、次のファイル:

<cfparam name="url.bindstateid" default="">

<!--- then the query to get cities under the state --->
    <cfquery name="qCity" datasource="#Variables.fw.Config.DSN#">
        SELECT * 
        from refCity 
        WHERE 1=0 
        <cfif trim(url.bindstateid) is not "">
        OR (State = <cfqueryparam cfsqltype="cf_sql_varchar" value="#url.bindstateid#"> AND status = 'Active')
        </cfif>
        order by ldesc
    </cfquery

そして最後

<cfparam name="url.prevcityid" default="">

<select name="City">
    <option value="" <cfif trim(url.prevCityid) eq "">selected</cfif>></option>
    <cfoutput query="qCity">
        <option value="#qCity.City#" <cfif trim(url.PrevCityID) is "">selected</cfif>>#qCity.Ldesc#</option>
    </cfoutput>
</select>
于 2013-03-25T02:15:08.543 に答える