我想创建一个(相当大)的WordPress用户提供按字母顺序分类的用户指标,这样的用户列表:PHP/SQL/WordPress的:第一组由字母
一个
- 艾米
- 亚当
乙
- 伯纳德
- 比安卡
等。
我已经创建的正常工作对于这一点,除了一个问题一个自定义的WordPress查询:它还显示“空”的信件,那里并没有名称以该字母的任何用户的信件。如果你能帮助我修复这段代码,以便它只显示这个字母,如果实际上有一个用户的名字是这个字母的话,我会很高兴的:)我已经通过检查该字母有多少结果来试试我的运气,但不知何故,这是行不通的。
(仅供参考,我使用用户照片插件,只需要显示在谁拥有批准的画面,从而在SQL查询的东西列表中的用户)。
<?php
$alphabet = range('A', 'Z');
foreach ($alphabet as $letter) {
$user_count = $wpdb->get_results("SELECT COUNT(*) FROM wp_users WHERE display_name LIKE '".$letter."%' ORDER BY display_name ASC");
if ($user_count > 0) {
$user_row = $wpdb->get_results("SELECT wp_users.user_login, wp_users.display_name
FROM wp_users, wp_usermeta
WHERE wp_users.display_name LIKE '".$letter."%'
AND wp_usermeta.meta_key = 'userphoto_approvalstatus'
AND wp_usermeta.meta_value = '2'
AND wp_usermeta.user_id = wp_users.ID
ORDER BY wp_users.display_name ASC");
echo '<li class="letter">'.$letter.'';
echo '<ul>';
foreach ($user_row as $user) {
echo '<li><a href="/author/'.$user->user_login.'">'.$user->display_name.'</a></li>';
}
echo '</ul></li>';
}
}
?>
在此先感谢!
更新:
我编辑的SQL到这一点,但现在我有它的第一个礼,这螺丝了布局,这样才吐出一个</ul>
问题:
</ul>
</li>
<li class="letter">
<div class="letter_head">A</div>
<ul>
<li>Abigail</li>
</ul>
</li>
<li class="letter">
<div class="letter_head">B</div>
<ul>
<li>Bernard</li>
<li>Bianca</li>
</li>
</ul>
这是一般非常靠不住的有关UL和李嵌套。我该如何解决它?
<?php
$qry = "SELECT DISTINCT wp_users.user_login, wp_users.display_name,
LEFT(UPPER(wp_users.display_name), 1) AS first_char
FROM wp_users, wp_usermeta
WHERE UPPER(wp_users.display_name) BETWEEN 'A' AND 'Z'
OR wp_users.display_name BETWEEN '0' AND '9'
AND wp_usermeta.meta_key = 'userphoto_approvalstatus'
AND wp_usermeta.meta_value = '2'
AND wp_usermeta.user_id = wp_users.ID
ORDER BY wp_users.display_name ASC";
$result = mysql_query($qry);
$current_char = '';
while ($row = mysql_fetch_assoc($result)) {
if (!isset($current_char)) {
echo '<li class="letter"><div class="letter_head">'.$current_char.'</div>';
echo '<ul>';
} elseif ($row['first_char'] != $current_char) {
echo '</ul>';
$current_char = $row['first_char'];
echo '<li class="letter"><div class="letter_head">'.$current_char.'</div>';
echo '<ul>';
}
echo '<li><a href="/member/'.$row['user_login'].'">'.$row['display_name'].'</a></li>';
}
?>
听起来很不错。它是如何工作的? (我知道如何做日期这样的事情,但在这种情况下我不知道该怎么做)。 – rayne 2010-04-13 15:07:42