Поэтому нужно сделать запрос на основе того, что выбрано пользователем. Выпадающее меню со Школой, EID, Principal и Books указывается в качестве параметров. Когда выбрано или щелкнуло "Школа", он выполнит запрос в базе данных sql-сервера и бросит в другой раскрывающийся список, чтобы пользователь мог выбрать все ценности школы. Мой английский не настолько велик, так что я имею в виду
Dropdown → Если выбрана школа → kogod, SIS, Гуманные исследования, Школа бизнеса Whartons и т.д. (Из базы данных). → Если щелкнуть Wharton, он отобразит таблицу. Так что это похоже на каскадное раскрывающееся меню, основанное на том, что выбрано.
Итак, как вы это делаете? Код, пожалуйста, дайте мне код. Благодаря
<cfform method="POST" action=""> <select name="one" required="yes" onchange="this.form.submit()">
<option>Select Type</option>
<option value="school">School</option>
<option value="EID">Electronic ID</option>
<option value="prinical">Principal Name</option>
<option value="books">Books Used</option>
</select>
</cfform>
<cfquery name="schoollist" datasource="xxyyzz" dbtype="ODBC">
select school_title,
from DATABASENAME order by school_title
</cfquery>
<cfif one.school is "selected?" from the first DROPDOWN then another drown down will pop up with the list of schools >
Помоги пожалуйста
Я написал быстрое решение, которое вы должны иметь возможность расширить до нескольких уровней достаточно глубоко. В настоящее время он просто обрабатывает первый слой, в котором вы выбираете значение из первого раскрывающегося списка, и оно показывает вам следующее, но вы можете применить одну и ту же концепцию несколько раз.
<cfif structKeyExists(form, "one") and form.one neq "">
<cfswitch expression="#form.one#">
<cfcase value="school">
<cfquery name="schoollist" datasource="xxyyzz" dbtype="ODBC">
select school_title,
from DATABASENAME order by school_title
</cfquery>
<select name="schoollist" required="yes" onchange="this.form.submit()">
<cfoutput query="schoollist">
<option value="#schoollist.school_title#">#schoollist.school_title#</option>
</cfoutput>
</select>
</cfcase>
<cfcase value="EID">
<cfquery name="eidlist" datasource="xxyyzz" dbtype="ODBC">
select eid,
from DATABASENAME order by eid
</cfquery>
<select name="eidlist" required="yes" onchange="this.form.submit()">
<cfoutput query="eidlist">
<option value="#eidlist.eid#">#eidlist.eid#</option>
</cfoutput>
</select>
</cfcase>
<cfcase value="principle">
<cfquery name="principle" datasource="xxyyzz" dbtype="ODBC">
select principle,
from DATABASENAME order by principle
</cfquery>
<select name="principleList" required="yes" onchange="this.form.submit()">
<cfoutput query="principle">
<option value="#principle.principle#">#principle.principle#</option>
</cfoutput>
</select>
</cfcase>
<cfcase value="books">
<cfquery name="books" datasource="xxyyzz" dbtype="ODBC">
select books,
from DATABASENAME order by books
</cfquery>
<select name="books" required="yes" onchange="this.form.submit()">
<cfoutput query="books">
<option value="#books.books#">#books.books#</option>
</cfoutput>
</select>
</cfcase>
</cfswitch>
<cfelse>
<cfform method="POST" action="#cgi.script_name#">
<select name="one" required="yes" onchange="this.form.submit()">
<option>Select Type</option>
<option value="school">School</option>
<option value="EID">Electronic ID</option>
<option value="prinical">Principal Name</option>
<option value="books">Books Used</option>
</select>
</cfform>
</cfif>
Вы также можете упростить код, выполняя что-то подобное, но у меня нет возможности проверить это на данный момент, поэтому вам, возможно, придется поиграть с ним, чтобы заставить его работать:
<cfif structKeyExists(form, "dropdown") and form.dropdown neq "">
<!--- prevent sql injection, also serves to convert text in the database to valid table and column names for the next query--->
<cfset sanitizedString = rereplacenocase(form.dropdown,'[^a-z_]','','all')>
<!--- get data for drop down based on user selection --->
<cfif structKeyExists(form, "rootType")>
<cfset tableName = rereplacenocase(form.rootType,'[^a-z_]','','all')>
<cfquery name="getInfo" datasource="mysql">
SELECT *
FROM #tableName#
WHERE #tableName# = <cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="#form.dropdown#">
</cfquery>
<cfif getInfo.recordCount gt 0>
<cfdump var="#getInfo#">
<cfelse>
No records were found.
</cfif>
<cfelse>
<cfquery name="getDropDownData" datasource="mysql">
select #sanitizedString#
from #sanitizedString# order by <cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="#form.dropdown#">
</cfquery>
<cfform method="POST" action="#cgi.script_name#">
<input type="hidden" name="rootType" value="<cfoutput>#form.dropdown#</cfoutput>">
<select name="dropdown" required="yes" onchange="this.form.submit()">
<option value="">Select Value</option>
<cfoutput query="getDropDownData">
<cfset val = getDropDownData["#sanitizedString#"]>
<option value='#val#'>#val#</option>
</cfoutput>
</select>
</cfform>
</cfif>
<!--- redisplay the form --->
<cfelse>
<cfform method="POST" action="#cgi.script_name#">
<select name="dropdown" required="yes" onchange="this.form.submit()">
<option>Select Type</option>
<option value="school">School</option>
<option value="EID">Electronic ID</option>
<option value="principal">Principal Name</option>
<option value="books">Books Used</option>
</select>
</cfform>
</cfif>
select #form.one# from DATABASENAME order by #form.one#
.