Drupal onChange автоматически заполняет другой список выбора CCK - PullRequest
0 голосов
/ 07 января 2010

Я создал многошаговую форму с использованием CCK, однако у меня есть несколько нерешенных проблем, но я не уверен, что CCK может помочь.

В одном шаге формы у меня есть 2 поля выбора, первый автоматически заполняется из словарной таблицы следующим кодом и все хорошо работает.

$category_options = array();
$cat_res = db_query('select vid, name from vocabulary WHERE vid > 1 ORDER BY name ASC');
while ($cat_options = db_fetch_object($cat_res)) {
  $category_options[$cat_options->vid] = $cat_options->name;
}
return $category_options;

Что я хотел бы сделать, так это то, что когда пользователь выбирает один элемент из словарного списка, он автоматически заполняет другое поле выбора терминами из таблицы term_data. У меня 2 вопроса;

1) Я добавил следующий код во второй список выбора, просто чтобы убедиться, что он работает (ЭТО НЕ ДЕЛАЕТ). Есть несколько терминов, связанных с каждым словарем, но второй sql Statemant возвращает только один результат, когда он должен возвращать несколько (ТАК ЧТО-ТО НЕПРАВИЛЬНО). Например, в таблице term_date есть 6 терминов с vid 3, но я добавляю только один, чтобы выбрать список.

$term_options = array();  
$term_res = db_query('select vid, name from term_data WHERE vid = 3 ORDER BY name ASC'); while ($options = db_fetch_object($term_res)) {    
$term_options[$options->vid] = $options->name;  
}  
return $term_options;

2) Могу ли я добавить onChange к первому списку выбора для вызова функции автоматического заполнения второго списка с помощью CCK, или мне нужно склоняться к выполнению всей моей формы с использованием API FORM.

Любая помощь или мысли будут очень признательны.

1 Ответ

0 голосов
/ 08 января 2010

Кажется, это ошибка в запросе, который получает термины. Я пытался исправить:

$term_res = db_query('select tid, name from term_data WHERE vid = 3 ORDER BY name ASC'); 
while ($options = db_fetch_object($term_res)) {    
  $term_options[$options->tid] = $options->name;
}

В вашем коде вы выбрали vid, который фактически равен всем терминам. Затем вы добавили имена терминов в массив $ term_options под тем же ключом =>, чтобы вы получили только 1 элемент.

Учитывая второй вопрос: я бы отправил всю структуру данных (все словари и их термины) как json клиенту (вставил js-скрипт на страницу из вашего кода drupal) и реализовал желаемый функциональность с JQuery.

...