2010-01-07 53 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所需的功能。

相關問題