选择列表允许值

时间:2011-03-27 09:18:41

标签: drupal drupal-6

我有这个代码动态地在drupal中创建一个选择列表。

$res = db_query("select field1 from content_type_1");
while($row = db_fetch_array($res)){
$rows[] =$row['field1'];
}
return $rows;

输出如下:

<select>
<option value="0">row['field1']</option>
</select>

我需要这样的输出

<select>
<option value="row['field1']">row['field1']</option>
</select>

怎么做?

3 个答案:

答案 0 :(得分:1)

要成为“drupal compliance”,您的代码应遵循编写SQL查询的“drupal方式”。

你需要在SQL表的名称周围使用{...}(如果需要,这允许drupal添加前缀),你应该使用

$res = db_query("select field1 from {content_type_1}");
while ($row = db_fetch_array($res)) {
  $rows[] =$row['field1'];
}

然后,对于网站上的任何表单,您应该使用 form API select 声明)

所以代码应该是这样的:

function mymodule_form(&$form_state) {
  $form['mySelect'] = array(
   '#type' => 'select', 
   '#title' => t('A title'), 
   '#default_value' => '',
   '#options' => get_rows();
  );
  return $form
}

function get_rows() {
  $res = db_query("select field1 from {content_type_1}");
  while ($row = db_fetch_array($res)) {
    $rows[] = $row['field1'];
  }
return $rows; 
}

/* .. more code if needed .. */
// Then you can print your form.
// This should be called by a hook_menu or a theme() function ... not alone like here.
echo drupal_get_form('mySelect');

答案 1 :(得分:0)

不确定,但我想drupal:

  • 使用数组的键作为value属性
  • 并使用数组的值作为<option>
  • 的内容

如果是这种情况,将循环更改为此可能会有所帮助:

while($row = db_fetch_array($res)){
    $rows[ $row['field1'] ] = $row['field1'];
}

现在,对于$rows数组的每个项目,键与值相同。

答案 2 :(得分:0)

现在可以肯定了,但我从数据库中选择的大部分内容都是这样的日志:

<select name="cctype">
    <option value="" selected = "Selected" >Pick one</option>
<?PHP
while($row = db_fetch_array($res)) {
    echo (' <option value="'.$row["field1"].'">'.$row["field1"].'</option>');
}
?>
</select>
希望有所帮助。

Silver Tiger