これは SO に関する私の 2 番目の質問にすぎません。私はあらゆる種類の Web コーディングにまったく慣れていません (過去 3 週間以内にすべてを習得したので、自分が何をしているのかよくわかりません)。しかし、ここにいくつかの背景と私の問題があります:
背景情報: 冗談抜きで 42 の異なるドロップダウン メニューがあり、さまざまな水域とサンプリング日のデータ マップを表示する既存のページをいくつか更新しています。そのため、ユーザーがデータを表示したい支流とサンプリング日付の組み合わせを選択できる 2 つのドロップダウン メニューで、すべてを少しエレガントな (まだかなり古い) アプローチに要約しています。
CFC と CFM を使用した 2 つの動的関連ドロップダウンがあります (SO のおかげでうまく機能しています)。THE CFC には、データベースからデータを取得するための関数、クエリ、引数があります。CFM は最初のドロップダウン メニュー (支流のリスト) を表示し、ユーザーがそこから選択すると、2 番目のドロップダウンに支流がサンプリングされた日付が入力されます。この 2 番目のドロップダウンの「表示」は、日付の先頭に追加されたトリビュタリ名であるため、「バック リバー: 2014 年 4 月 7 日」のように「トリブデート」として表示されます。ユーザーが 2 番目のドロップダウン (「リンク」という名前) から必要なものを選択し、送信を押すと、送信された値はパス文字列 (「File_html」) であり、ターゲット ページではデータのマップが表示されます。それらの日付のそれらの支流。対象ページの「form.link」
私の問題: 表示される各画像の上に、「支流」の名前と「サンプリング日」を表示したいのですが、この情報を渡す方法がわかりません。「File_html」を渡していますが、「tribdate」(表示値) を渡すか、「tributary」または「cruisedate」を別々に渡したいです。または、画像の代替テキストを使用することもできますが、その方法もわかりません。
私が試したこと: (1) 渡された値から使用可能な支流の名前を引き出すことはできません (多くは部分的な名前です) が、使用可能な支流の日付を引き出すことはできます。(2)支流が選択されている最初のドロップダウンから「支流」の名前を引き出し、それを使用してマップにタイトルを付けようとすると、1つのマップでのみ機能します(1つの支流のみが選択されているのは理にかなっています)。そのため、ユーザーが「バック リバー」から 2 つの日付を選択した場合、「バック リバー」というタイトルのマップは 1 つしか表示できず、2 つ目のマップにはエラーが発生します。この支流の値を複製して必要なときに再利用する方法があれば、それは素晴らしいことです。(3) 選択した日付の支流名だけを表示する 3 番目のドロップダウンを作成してから、そのドロップダウン メニューの名前をタイトル名に使用してマップに表示しようとしましたが、できませんでした。
CFC からトリビュタリを呼び出すことはできますか? 'tribdate' をマップ表示ページに送信できますか? どんな助け、ヒント、アイデアも素晴らしいでしょう、ありがとう。基本的に私が求めているこの質問を見ましたが、与えられた答えをどこに置くべきか本当にわかりません: CFQUERY と CFSELECT を使用して、選択に基づいて複数の値をプルします
CFC:
<cfcomponent displayname="GetStuff" hint="Getting data on cruises from database">
<!---Get list of Tributaries--->
<cffunction name="getData"
access="remote"
returntype="query"
hint="Get data for tributary dropdown">
<!---define variables--->
<CFSET VAR data="">
<!---Run the query for tributaries--->
<cfquery name="data" datasource="mydatasource">
SELECT DISTINCT Tributary
FROM df_cruises
ORDER BY Tributary
</cfquery>
<!---and return it--->
<cfreturn data>
</cffunction>
<!---Get Dates by Tributary--->
<cffunction name="getDates"
access="remote"
returntype="query"
hint="Get cruise dates by tributary for select dropdown">
<cfargument name="Tributary" type="any" required="no" multiple="yes">
<!---define variables--->
<cfset var data="">
<!---Run query to get Date Data and add Trib name to front, and get File_html to send to MapDisplay--->
<cfquery name="data" datasource="mydatasource">
SELECT File_html, Tributary, (Tributary + ':' + SPACE(2)) + CONVERT(varchar(12), CruiseDate, 107) AS tribdate
FROM df_cruises
WHERE Tributary IN (<cfqueryparam cfsqltype='cf_sql_varchar' list="yes" value='#ARGUMENTS.Tributary#'>)
ORDER BY tribdate
</cfquery>
<!---And return it--->
<cfreturn data>
</cffunction>
</cfcomponent>
ドロップダウン/フォームを持つ CFM:
<cfform name="CruiseChoose" action="mapdisplayv5.cfm" method="post">
<td align="center">
<strong>Tributary/Water Body:</strong><br />
<cfselect name="Tributary"
size="7" class="dynamicdropdown"
multiple="yes"
value="Tributary"
display="Tributary"
bind="cfc:UsingBook.getData()"
bindonload="yes"/>
</td>
<td align="center"><br />
<strong>Sampling Dates:</strong><br />
<cfselect name="link"
size="7" class="dynamicdropdown"
multiple="yes"
value="File_html"
display="tribdate"
bind="cfc:UsingBook.getDates({Tributary})"
bindonload="false"
type="any"/>
</td>
データ マップを表示するターゲット CFM ページ:
<!---mapdisplayv5.cfm--->
<tr>
<td>
<p><p><cfoutput>
<cfif IsDefined("form.link")>
<br>
<cfset cnt= 1>
<cfloop index="listing" list="#form.link#" delimiters=",">
<cfset Tributary=#listGetAt(form.link, cnt)#>
<div align="center">
<font size="4"><b>#Tributary#<cfset cnt=cnt> - <cfset tribdate=#listGetAt(form.link, cnt)#> #right(tribdate, 6)# </b></font>
<cfset wqmimage=#listGetAt(form.link, cnt)#>
<table width="85%" border="1" bordercolor="##000000">
<tr>
<td><a href="images/#Ltrim(wqmimage)#lg.html" class="link"><cfinclude template="images/#Ltrim(wqmimage)#.html"></a></td>
</tr>
</table>
<a href="images/#Ltrim(wqmimage)#lg.html" class="link">Click here for Enlarged Map (WARNING-Large File Size)</a><Br>
<cfif listlen(form.link)Less Than or Equal to #cnt#>
<cfbreak>
</cfif>
<cfset cnt=cnt+1>
<br><br><hr>
</cfloop>
<cfelse>
<b>
<p align="center"><br><br><br><br>No Selection Was Made.<br>Please Return to the Previous Page and Make Your
Selection</p></b><Br>
<br><br><br>
</cfif>
</p>
</cfoutput></p>
更新: フォームを持つ CFM ページで、PK "ID" を mapdisplayv5.cfm に渡しています。以下はそのための新しいコードです。これで正しいタイトルが関連付けられ、必要な画像が表示され、複数表示されますが、各複数は、2 番目のドロップダウンからの最初の選択のコピーです。したがって、2 つの異なる日付を選択すると、最初に選択した日付のコピーが 2 つ表示されます。
フォームを使用した CFM の 2 番目のドロップダウンへの変更のスナップショット。ID を渡していることに注意してください。
<td align="center"><br />
<strong>Sampling Dates:</strong><br />
<cfselect name="link"
size="7" class="dynamicdropdown"
multiple="yes"
value="ID"
display="tribdate"
bind="cfc:UsingBook.getDates({Tributary})"
bindonload="false"
type="any"/>
</td>
mapdisplay.cfm ページに移動します。
<!---mapdisplayv5.cfm--->
<tr>
<td>
<p><cfoutput>
<cfif IsDefined("form.link")>
<cfquery name="retrieve" datasource="mydatasource">
SELECT File_html, Tributary, CruiseDate, (Tributary + ':' + SPACE(2)) + CONVERT(varchar(12), CruiseDate, 107) AS tribdate
FROM df_cruises
WHERE ID IN (<CFQUERYPARAM VALUE='#FORM.link#' list='yes' CFSQLTYPE='CF_SQL_INTEGER'>)
</cfquery>
<cfset cnt= 1>
<cfloop index="listing" list="#form.link#" delimiters=",">
<br>
<cfset wqmimage=#retrieve.File_html#>
<cfset tributary=#retrieve.Tributary#>
<cfset tribdate=#retrieve.tribdate#>
<div align="center">
<font size="4"><b>#tribdate#</b></font>
<a href="images/wqmimage.jpg" class="link"><cfinclude template="images/#Ltrim(wqmimage)#.html"></a>
<a href="images/#Ltrim(wqmimage)#lg.html" class="link">Click here for Enlarged Map (WARNING-Large File Size)</a><Br><br>
<cfif listlen(form.link)Less Than or Equal to #cnt#>
<cfbreak>
</cfif>
<cfset cnt=cnt+1>
</cfloop>
<cfelse>
<br>
<p align="center"><br><br><br><br>No Selection Was Made.<br>Please Return to the Previous Page and Make Your
Selection</p></b><Br>
<br><br><br>
</cfif>
</cfoutput>
更新 2:mapdisplayv5.cfm の修正済みの作業バージョン (ルーク、ダン、リーに感謝します!)
<!---mapdisplayv5.cfm--->
<tr>
<td>
<p>
<cfif IsDefined("form.link")>
<cfquery name="retrieve" datasource="tideRO">
SELECT File_html, Tributary, CruiseDate, (Tributary + ':' + SPACE(2)) + CONVERT(varchar(12), CruiseDate, 107) AS tribdate
FROM df_cruises
WHERE ID IN (<CFQUERYPARAM VALUE='#FORM.link#' list='yes' CFSQLTYPE='CF_SQL_INTEGER'>)
</cfquery>
<br><cfoutput query="retrieve">
<cfset wqmimage=#retrieve.File_html#>
<cfset tributary=#retrieve.Tributary#>
<cfset tribdate=#retrieve.tribdate#>
<div align="center">
<font size="4"><b>#tribdate#</b></font>
<a href="images/#wqmimage#.jpg" class="link"><cfinclude template="images/#Ltrim(wqmimage)#.html"></a>
<a href="images/#Ltrim(wqmimage)#lg.html" class="link">Click here for Enlarged Map (WARNING-Large File Size)</a><Br><br></cfoutput>