0

我是 php 新手,并试图使下拉列表与 wordpress 用户表一起使用

我正在尝试将用户 ID 设置为一个值并希望显示 user_login 但无法正确获取。它使用错误的 ID 渲染两次。这是我的代码

global $wpdb;
        $userids = $wpdb->get_col("SELECT ID FROM $wpdb->users");
        $user_logins = $wpdb->get_col("SELECT user_login FROM $wpdb->users");

        echo '<select>';
        foreach($userids as $userid){
            foreach($user_logins as $user_login)
            echo '<option value="'.$userid.'" selected="'.$user_login.'">'.$user_login.'</option>';
        }
        echo '</select>';

非常感谢

4

2 回答 2

1

如果您需要使用当前正在使用的两个查询,则可以使用计数器进行迭代,而不是foreach

$count = count($userids);
for ($i = 0; $i < $count; $i++) {
    echo '<option value="' . $userids[$i] . '" selected="' . $user_logins[$i] . '">' . $user_logins[$i] . '</option>';
}

您可以使用 WordPress 的方法将这两个查询组合成一个查询get_results()

$users = $wpdb->get_results("SELECT ID, user_login FROM $wpdb->users");
echo '<select>';
foreach ($users as $user) {
    echo '<option value="' . $user->ID . '" selected="' . $user->user_login . '">' . $user->user_login . '</option>';
}
echo '</select>';

还值得指出的是,option'selected属性使用不当。它应该只设置在单个选项上,并且通常设置为“已选择”的值,例如selected="selected". 请参阅W3C 文档以获取有关此的更多信息。

于 2012-08-03T18:28:23.157 回答
1

您似乎正在执行两个循环,这可能会由于和foreach之间的重复不匹配而导致您出现问题。相反,请尝试使用如下循环:$userids$user_loginsfor

for ($i = 0; $i < count($userids); $i++){
    echo '<option value="'.$userids[$i].'" selected="'.$user_logins[$i].'">'.$user_logins[$i].'</option>';
}
于 2012-08-03T18:33:00.417 回答