2010-01-07 57 views
0

我已经使用CCK构建了一个多步表单,但是我有几个未解决的问题,但不知道CCK是否可以提供帮助。Drupal onChange自动填充另一个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; 

我希望做的是,当用户选择从vocablulary列表它自动一项填充另一个选择框从term_data表项。我有两个问题;

1)我已经将下面的代码添加到第二个选择列表中,只是为了确保它的工作原理(它不是)。有多个词与每个词汇相关联,但第二个sql语句只返回一个结果,当它返回几个时,(SO SOMETHING WRONG HERE)。例如,在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填充第二个列表,或者我必须对使用FORM API做我的整个形式倾斜。

任何帮助或想法将非常感激。

回答

0

这似乎是在查询条件的错误。我试图更正:

$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所需的功能。

相关问题