【问题标题】:Drupal onChange auto populate another CCK select listDrupal onChange 自动填充另一个 CCK 选择列表
【发布时间】:2010-01-07 10:11:16
【问题描述】:

我已经使用 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 语句只返回一个结果,当它应该返回几个时,(这里有些错误)。例如,在 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 来完成我的整个表单。

任何帮助或想法将不胜感激。

【问题讨论】:

    标签: forms drupal cck


    【解决方案1】:

    获取术语的查询似乎是一个错误。我试图纠正:

    $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 发送到客户端(从您的 drupal 代码将 js 脚本插入页面)并实现jquery 所需的功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多