根据单选按钮选择将下拉菜单的值和显示名称更改为 SQL 查询结果
Posted
技术标签:
【中文标题】根据单选按钮选择将下拉菜单的值和显示名称更改为 SQL 查询结果【英文标题】:Changing a dropdown menu's value AND display name to SQL query results based on a radio button selection 【发布时间】:2011-08-26 23:14:28 【问题描述】:重要提示:我想要的大部分内容都已完成且功能齐全——唯一不起作用的部分是获得一个与下拉列表。也就是说,我将把整个事情都摆出来,以便任何可能想要使用类似东西的人受益。
目标:当用户单击单选按钮时,页面其他位置的下拉菜单会被修改以显示不同的值,这些值来自 SQL 查询。
具体来说,在本例中,用户会选择一个学术课程(例如博士),然后下拉菜单会显示可用的开始日期。
这是一个 SQL 查询,它获取可用的开始日期,并将它们格式化为 javascript:
$app_period_lookup_psyd = mssql_query("select app_period_id,
app_period_display_online from dbo.v_app001_application_period_for_dropdown
where pgm_id = 1 order by available_dt");
$app_period_options_psyd = "";
while($result = mssql_fetch_array($app_period_lookup_psyd))
$app_period_options_psyd .= "'" . $result['app_period_display_online'] ."', ";
这里创建的变量是 $app_period_options_psyd,它会输出如下内容: “2011 年 9 月”、“2012 年 1 月”、
这些是单选按钮:
<input type="radio" name="pgm_id" id="macpe" value="4"
onclick="change([<?=$app_period_options_psyd?>]) " />Radio Button 1<br />
<input type="radio" name="pgm_id" id="macpd" value="5"
onclick="change(['January', 'February', 'March']) " />Radio Button 2
单击这两个按钮会生成以下下拉菜单:
<select id="app_period_id">
<option value="September 2011">September 2011</option>
<option value="January 2012">January 2012</option>
</select>
<select id="app_period_id">
<option value="January">January</option>
<option value="February">February</option>
<option value="March">March</option>
</select>
他们通过标题中的这个脚本工作:
<script type="text/javascript">
function change(arr)
var el = document.getElementById('app_period_id');
el.options.length = 0;
for(var i = 0; i< arr.length; i++ )
el.options[el.options.length] = new Option( arr[i], arr[i]);
</script>
问题:如何修改 Javascript 来为 value="" 和描述符创建不同的值,而这两个值都来自查询/查询?这是理想的输出:
<select id="app_period_id">
<option value="app_period_1">January 2012</option>
<option value="app_period_6">February 2012</option>
<option value="app period_18">March 2013</option>
</select>
“app_period_x”将在 SQL 查询中生成。
【问题讨论】:
【参考方案1】:尝试以下更改:
$app_period_options_psyd .= "'" . $result['app_period_display_online'] ."', ";
变成
$app_period_options_psyd .= "'" . $results['app_period_id'] . "'," . $result['app_period_display_online'] ."', ";
这意味着你的数组现在看起来像
arr_[0] = ID arr_[1] = 关联名称 等等
现在将 Javascript 函数更改为
<script type="text/javascript">
function change(arr)
var el = document.getElementById('app_period_id');
el.options.length = 0;
for(var i = 0; i< arr.length; i+=2 )
el.options[el.options.length] = new Option( arr[i], arr[i+1]);
</script>
您现在在数组中循环两个步骤,并将两个元素都放入您的代码中。
【讨论】:
嗯,它似乎没有输出该数据。我尝试了一些不同的方法,并修复了一个错误( $results 应该是 $result )。我仍在测试表单是否输出了这两件事。不过,我肯定看到了回复中的逻辑。我一定会在接下来的几天内告诉你我是否能做到(或没有)。以上是关于根据单选按钮选择将下拉菜单的值和显示名称更改为 SQL 查询结果的主要内容,如果未能解决你的问题,请参考以下文章