2012-08-06 130 views
3

我对PHP仍然很陌生,甚至对于Drupal的Form API更新。我只是试图从数据库中填充一个下拉选择。我认为这个问题源于我对如何处理多维数组缺乏深刻的理解。任何帮助真诚赞赏。Drupal 7 - 填充下拉菜单从表单API中选择数据库

我的代码是目前:

//Query DB for Rows 
    $query = db_select('hp_education_years'); 
    $query->fields('hp_education_years', array('id', 'years',)); 
    $query->orderBy('years', 'ASC'); 
    $results = $query->execute(); 

    //define rows 
    $options = array(); 
    foreach ($results as $result) { 
     $options[$result->id] = array(
      $result->years, 
     ); 
    } 
    $form['education']['year'] = array(
     '#type' => 'select', 
     '#title' => t('Year'), 
     '#options' => $options, 
     '#states' => array(
      'visible' => array(
       ':input[name="data_set"]' => array('value' => 'education'), 
      ), 
     ), 
    ); 

这返回的人口名单,但以粗体显示年份的ID以及年度(2008年为例)。

我怎样才能让下拉菜单显示年份,而不是以粗体显示年份ID,然后显示年份。它看起来像$选项只是比我想要的水平更高?如果这是有道理的?

非常感谢提前。

回答

6

尝试改变

//define rows 
$options = array(); 
foreach ($results as $result) { 
    $options[$result->id] = array(
     $result->years, 
    ); 
} 

//define rows 
$options = array(); 
foreach ($results as $result) { 
    $options[$result->id] = $result->years; 
} 

如果你从Drupal's Form API的例子中,你将看到选项的值应该只是字符串值,而不是一个数组。