Изменение значения раскрывающегося меню И отображаемого имени на результаты запроса SQL на основе выбора переключателя - PullRequest
0 голосов
/ 27 августа 2011

Важное примечание: Большинство вещей, которые я хочу получить, закончены и работоспособны - единственная часть, которая не работает, это получение значения "value =", отличного от имени параметра select dropdown. Тем не менее, я собираюсь изложить все это в интересах любого, кто захочет использовать что-то подобное.


Цель: Когда пользователь нажимает переключатель, раскрывающееся меню в другом месте на странице изменяется, чтобы отображать различные значения, извлекаемые из запроса 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», «январь 2012»,

Это переключатели:

<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>

Где в запросе SQL будет сгенерирован app_period_x.

1 Ответ

0 голосов
/ 27 августа 2011

Попробуйте следующие изменения:

$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>

Теперь вы проходите через массив два шага и вставляете оба элемента в свой код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...