将Drupal用户阵列放入下拉列表中

时间:2013-10-23 13:04:00

标签: arrays drupal drop-down-menu stdclass

我有一个查询将我的所有drupal用户拉入stdClass_object,但是除了使用print_r之外我无法获取这些值。我想将它们放入下拉列表中,但无法使其正常工作。

stdClass Object ( [uid] => 0 [users_name] => )输出数组的示例

$result = db_query('SELECT users.uid AS uid,   users.name AS users_name FROM users users');
 $result_array = is_array($result);

 while ($existing_user = db_fetch_object($result)) {
 print_r($existing_user); // or do whatever
}

foreach ($existing_user->uid as $message) {
echo $message->users_name;

 }

1 个答案:

答案 0 :(得分:0)

您不应使用pg_fetch_array()或任何其他数据库类型特定功能。

相反,只需使用Drupal的数据库功能,它就会自动调整查询。

以下是适合您的代码:

function MYMODULE_get_users() {
  $users = array();
  $results = db_query("SELECT uid, name FROM {users}");
  foreach ($results as $user) {
    $users[$user->uid] = $user->name;
  }

  return $users;
}

以下是您将如何使用此代码:

<select name="uid">
<?php foreach (MYMODULE_get_users() as $user): ?>
  <option value="<?php print $user->uid; ?>"><?php print $user->name; ?></option>
<?php endforeach; ?>
</select>

但是,您应该使用Drupal的Form API来构建表单。它将为您处理许多事情,包括验证和提交开箱即用的处理。

检查this article以获取更多信息。另外,请查看Examples模块的源代码,特别是与Form API相关的示例。