【问题标题】:Making Drupal user array into a dropdown将 Drupal 用户数组变成下拉列表
【发布时间】:2013-10-23 13:04:00
【问题描述】:

我有一个查询将我的所有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;

 }

【问题讨论】:

    标签: arrays drupal drop-down-menu stdclass


    【解决方案1】:

    您不应使用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 的表单 API 来构建表单。它会为您处理很多事情,包括开箱即用的验证和提交处理。

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

    【讨论】:

    • 感谢您的回复,我确实打算使用表单api,但是我在节点中使用了上面的代码并且下拉列表没有填充?或者我如何将这些信息放入表单?
    • sn-p 有效;但是我会说您在节点中使用代码的方式存在问题。把完整的代码贴出来让我看看。
    • 我发布了它(在一个节点中,我现在几乎允许节点中的任何代码),我宁愿在一个模块中使用它(如你所建议的那样)但如果我能得到一个很好的例子。只是提醒一下,我也想使用 drupal 6
    • 是的;将其称为 name 是 Drupal 的标准 - 为了使事情保持一致并且以后不那么混乱,我建议保持这种方式。
    猜你喜欢
    • 2016-02-15
    • 2019-08-07
    • 1970-01-01
    • 2022-10-07
    • 2012-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多