Забыли пароль?
Запросите новый здесь.

Автор темы: bakzz
ID темы: 1043
Информация:
Тема содержит 17 сообщения, была просмотрена 6857 раз.
Просмотр темы
PHP-Fusion Russia » Поддержка 7 версии » Вопросы новичков
 Распечатать тему
Вывод списка пользователей
bakzz
Подскажите php код для вывода списка пользователей из определенной категории.
 
Web
Chief
What is определенная категория? Из определенной пользовательской группы типа profile.php?group_id=42 ?
У богатых людей — большая библиотека. У бедных людей — большой телевизор.
 
jikaka
посмотри вывод юзеров в файле members.php и поставь условие на id группы
 
Web
bakzz
Chief написал:

What is определенная категория? Из определенной пользовательской группы типа profile.php?group_id=42 ?


да из группы, group_id=8

но вывести нужно в кастом страницу через <?php ?> пытался сделать по антологии с profile.php, но что-то не получается ac
 
Web
Rush
мне даже самому интересно посмотреть на элегантное решение этой проблемы. ведь группы юзера храняться по традиции склеенные в поле. соответственно прямым запросом забрать их нельзя. разве что через LIKE
 
Web
Vova
Загрузить источник  GeSHi: PHP
  1. if (!isset($_GET['rowstart']) || !isnum($_GET['rowstart'])) { $_GET['rowstart'] = 0; }
  2. $result = dbquery("SELECT * FROM ".DB_USER_GROUPS." WHERE group_id='".$_GET['group_id']."'");
  3. if (dbrows($result)) {
  4. $data = dbarray($result);
  5. $result = dbquery("SELECT * FROM ".DB_USERS." WHERE user_groups REGEXP('^\\\.{$_GET['group_id']}$|\\\.{$_GET['group_id']}\\\.|\\\.{$_GET['group_id']}$') ORDER BY user_name DESC LIMIT ".$_GET['rowstart'].",10");
  6. $rows = dbrows(dbquery("SELECT user_id FROM ".DB_USERS." WHERE user_groups REGEXP('^\\\.{$_GET['group_id']}$|\\\.{$_GET['group_id']}\\\.|\\\.{$_GET['group_id']}$')"));
  7. if ($rows != 0) {
  8. opentable($data['group_name']);
  9. echo "<table cellpadding='0' cellspacing='0' width='100%'>\n<tr>\n";
  10. echo "<td align='center' colspan='2' class='tbl1'><strong>".$data['group_name']."</strong> (".sprintf((dbrows($result) == 1 ? "Пользователь" : "Пользователи"), dbrows($result)).")</td>\n";
  11. echo "</tr>\n<tr>\n";
  12. echo "<td class='tbl2'><strong>Группы пользователей</strong></td>\n";
  13. echo "<td align='center' width='1%' class='tbl2' style='white-space:nowrap'><strong>Тип</strong></td>\n";
  14. echo "</tr>\n";
  15. while ($data = dbarray($result)) {
  16. $cell_color = ($i % 2 == 0 ? "tbl1" : "tbl2"); $i++;
  17. echo "<tr>\n<td class='".$cell_color."'>\n".profile_link($data['user_id'], $data['user_name'])."</td>\n";
  18. echo "<td align='center' width='1%' class='".$cell_color."' style='white-space:nowrap'>".getuserlevel($data['user_level'])."</td>\n</tr>";
  19. }
  20. echo "</table>\n";
  21. closetable();
  22. if ($rows > 10) { echo "<div align='center' style='margin-top:5px;'>\n".makepagenav($_GET['rowstart'], 10, $rows, 3, FUSION_SELF."?group_id=".$_GET['group_id']."&")."\n</div>\n"; }
  23. } else {
  24. redirect(BASEDIR);
  25. }
  26. } else {
  27. redirect(BASEDIR);
  28. }
Добавлено за 0.046 секунд, используя GeSHi 1.0.8.10

 
Web
mishqa35
хм.. А прочесть список пользователей и отобрать тех у кого user_groups=8 не как?

ps; чуть чуть опоздал))
 
Web
Vova
Загрузить источник  GeSHi: PHP
  1. $result = dbquery("SELECT * FROM ".DB_USER_GROUPS." WHERE group_id='8'");
  2.  
  3. if (dbrows($result)) {
  4.  
  5. $data = dbarray($result);
  6.  
  7. $result = dbquery("SELECT * FROM ".DB_USERS." WHERE user_groups REGEXP('^\\\.{8}$|\\\.{8}\\\.|\\\.{8}$') ORDER BY user_name DESC");
  8.  
  9. opentable($data['group_name']);
  10.  
  11. echo "<table cellpadding='0' cellspacing='0' width='100%'>\n<tr>\n";
  12.  
  13. echo "<td align='center' colspan='2' class='tbl1'><strong>".$data['group_name']."</strong> (".sprintf((dbrows($result) == 1 ? "Пользователь" : "Пользователи"), dbrows($result)).")</td>\n";
  14.  
  15. echo "</tr>\n<tr>\n";
  16.  
  17. echo "<td class='tbl2'><strong>Группы пользователей</strong></td>\n";
  18.  
  19. echo "<td align='center' width='1%' class='tbl2' style='white-space:nowrap'><strong>Тип</strong></td>\n";
  20.  
  21. echo "</tr>\n";
  22.  
  23. while ($data = dbarray($result)) {
  24.  
  25. $cell_color = ($i % 2 == 0 ? "tbl1" : "tbl2"); $i++;
  26.  
  27. echo "<tr>\n<td class='".$cell_color."'>\n".profile_link($data['user_id'], $data['user_name'])."</td>\n";
  28.  
  29. echo "<td align='center' width='1%' class='".$cell_color."' style='white-space:nowrap'>".getuserlevel($data['user_level'])."</td>\n</tr>";
  30.  
  31. }
  32.  
  33. echo "</table>\n";
  34.  
  35. closetable();
  36.  
  37. } else {
  38.  
  39. redirect(BASEDIR);
  40.  
  41. }
Добавлено за 0.034 секунд, используя GeSHi 1.0.8.10

Изменил(а) Vova, 12.11.2012 16:24
x1
 
Web
bakzz
Вова спасибо.

Я вот так и делал, но не выводит почему-то ((

те создает таблицу с заголовком нужной группы, а самого списка юзеров нет, не пойму что ни так.
 
Web
Vova
структура таблицы:

Загрузить источник  GeSHi: MySQL
  1. CREATE TABLE IF NOT EXISTS `gamer_users_groups` (
  2. `group_name` varchar(255) NOT NULL,
  3. `group_description` varchar(255) NOT NULL,
  4. `group_color` varchar(6) NOT NULL,
  5. PRIMARY KEY (`group_id`)
  6. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Добавлено за 0.015 секунд, используя GeSHi 1.0.8.10

 
Web
mishqa35
Как то так
$group_id = "1"; // вбиваещ ид своей группы
Загрузить источник  GeSHi: PHP
  1. <?php
  2.  
  3. require_once "maincore.php";
  4. require_once THEMES."templates/header.php";
  5. include LOCALE.LOCALESET."user_fields.php";
  6.  
  7. $group_id = "1"; // вбиваещ ид своей группы
  8.  
  9. $result = dbquery("SELECT group_id, group_name FROM ".DB_USER_GROUPS." WHERE group_id='".$group_id."'");
  10. if (dbrows($result)) {
  11. $data = dbarray($result);
  12. $result = dbquery(
  13. "SELECT user_id, user_name, user_level, user_status
  14. FROM ".DB_USERS."
  15. WHERE user_groups REGEXP('^\\\.{$group_id}$|\\\.{$group_id}\\\.|\\\.{$group_id}$')
  16. ORDER BY user_level DESC, user_name"
  17. );
  18. opentable($locale['u110']);
  19. echo "<table cellpadding='0' cellspacing='0' width='100%'>\n<tr>\n";
  20. echo "<td align='center' colspan='2' class='tbl1'><strong>".$data['group_name']."</strong>\n";
  21. echo "(".sprintf((dbrows($result) == 1 ? $locale['u111'] : $locale['u112']), dbrows($result)).")";
  22. echo "</td>\n</tr>\n<tr>\n";
  23. if (dbrows($result)) {
  24. echo "<td class='tbl2'><strong>".$locale['u113']."</strong></td>\n";
  25. echo "<td align='center' width='1%' class='tbl2' style='white-space:nowrap'><strong>".$locale['u114']."</strong></td>\n";
  26. echo "</tr>\n";
  27. while ($data = dbarray($result)) {
  28. $cell_color = ($i % 2 == 0 ? "tbl1" : "tbl2"); $i++;
  29. echo "<tr>\n<td class='".$cell_color."'>\n".profile_link($data['user_id'], $data['user_name'], $data['user_status'])."</td>\n";
  30. echo "<td align='center' width='1%' class='$cell_color' style='white-space:nowrap'>".getuserlevel($data['user_level'])."</td>\n</tr>";
  31. }
  32. }
  33. echo "</table>\n";
  34. } else {
  35. redirect("index.php");
  36. }
  37. closetable();
  38. require_once THEMES."templates/footer.php";
  39. ?>
Добавлено за 0.044 секунд, используя GeSHi 1.0.8.10

x1
 
Web
Rush
Vova написал:

Загрузить источник  GeSHi: PHP
  1. $result = dbquery("SELECT * FROM ".DB_USER_GROUPS." WHERE group_id='8'");
  2.  
  3. if (dbrows($result)) {
  4.  
  5. $data = dbarray($result);
  6.  
  7. $result = dbquery("SELECT * FROM ".DB_USERS." WHERE user_groups REGEXP('^\\\.{8}$|\\\.{8}\\\.|\\\.{8}$') ORDER BY user_name DESC");
  8.  
  9. opentable($data['group_name']);
  10.  
  11. echo "<table cellpadding='0' cellspacing='0' width='100%'>\n<tr>\n";
  12.  
  13. echo "<td align='center' colspan='2' class='tbl1'><strong>".$data['group_name']."</strong> (".sprintf((dbrows($result) == 1 ? "Пользователь" : "Пользователи"), dbrows($result)).")</td>\n";
  14.  
  15. echo "</tr>\n<tr>\n";
  16.  
  17. echo "<td class='tbl2'><strong>Группы пользователей</strong></td>\n";
  18.  
  19. echo "<td align='center' width='1%' class='tbl2' style='white-space:nowrap'><strong>Тип</strong></td>\n";
  20.  
  21. echo "</tr>\n";
  22.  
  23. while ($data = dbarray($result)) {
  24.  
  25. $cell_color = ($i % 2 == 0 ? "tbl1" : "tbl2"); $i++;
  26.  
  27. echo "<tr>\n<td class='".$cell_color."'>\n".profile_link($data['user_id'], $data['user_name'])."</td>\n";
  28.  
  29. echo "<td align='center' width='1%' class='".$cell_color."' style='white-space:nowrap'>".getuserlevel($data['user_level'])."</td>\n</tr>";
  30.  
  31. }
  32.  
  33. echo "</table>\n";
  34.  
  35. closetable();
  36.  
  37. } else {
  38.  
  39. redirect(BASEDIR);
  40.  
  41. }
Добавлено за 0.045 секунд, используя GeSHi 1.0.8.10


о боже, выколите мне глаза. мало того что просто regexp, так еще и regexp в sql запросе. о боги...
x1 x1
 
Web
Chief
Rush, regexp в sql запросе
Собственно это почти слово в слово (за вычетом ORDER BY user_level) оригинальный запрос из фьюжена, made by Starefossen.
У богатых людей — большая библиотека. У бедных людей — большой телевизор.
 
bakzz


о боже, выколите мне глаза. мало того что просто regexp, так еще и regexp в sql запросе. о боги...


ну так покажите как надо ah
 
Web
Vova
Rush написал:

Vova написал:

Загрузить источник  GeSHi: PHP
  1. $result = dbquery("SELECT * FROM ".DB_USER_GROUPS." WHERE group_id='8'");
  2.  
  3. if (dbrows($result)) {
  4.  
  5. $data = dbarray($result);
  6.  
  7. $result = dbquery("SELECT * FROM ".DB_USERS." WHERE user_groups REGEXP('^\\\.{8}$|\\\.{8}\\\.|\\\.{8}$') ORDER BY user_name DESC");
  8.  
  9. opentable($data['group_name']);
  10.  
  11. echo "<table cellpadding='0' cellspacing='0' width='100%'>\n<tr>\n";
  12.  
  13. echo "<td align='center' colspan='2' class='tbl1'><strong>".$data['group_name']."</strong> (".sprintf((dbrows($result) == 1 ? "Пользователь" : "Пользователи"), dbrows($result)).")</td>\n";
  14.  
  15. echo "</tr>\n<tr>\n";
  16.  
  17. echo "<td class='tbl2'><strong>Группы пользователей</strong></td>\n";
  18.  
  19. echo "<td align='center' width='1%' class='tbl2' style='white-space:nowrap'><strong>Тип</strong></td>\n";
  20.  
  21. echo "</tr>\n";
  22.  
  23. while ($data = dbarray($result)) {
  24.  
  25. $cell_color = ($i % 2 == 0 ? "tbl1" : "tbl2"); $i++;
  26.  
  27. echo "<tr>\n<td class='".$cell_color."'>\n".profile_link($data['user_id'], $data['user_name'])."</td>\n";
  28.  
  29. echo "<td align='center' width='1%' class='".$cell_color."' style='white-space:nowrap'>".getuserlevel($data['user_level'])."</td>\n</tr>";
  30.  
  31. }
  32.  
  33. echo "</table>\n";
  34.  
  35. closetable();
  36.  
  37. } else {
  38.  
  39. redirect(BASEDIR);
  40.  
  41. }
Добавлено за 0.047 секунд, используя GeSHi 1.0.8.10


о боже, выколите мне глаза. мало того что просто regexp, так еще и regexp в sql запросе. о боги...


не хочу тебя пугать но это код с офф. сборки. 7.02.03
 
Web
Rush
не хочу тя расстраивать, но я догадался. это не меняет ситуации.
имхо лучше уже использовать LIKE, нативные операторы всяко лучше регулярок.
а в идеале конечно для связи много ко многим надо использовать промежуточную таблицу, а не плодить такой быдлокод.
x1
 
Web
Polarfox
Rush, но пока то без вариантов, можешь придумать что нить свое, в целом тут одна страница только не сильно просядет серв.
Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле.
Ежели кто забанен за спам, но не считает себя ботом: можете сообщить мне об этом, все будет хорошо.

PolarLab - вход для подопытных
 
Web

Поделиться этой темой
Социальные закладки: Vkontakte Odnoklassniki Mail.ru Facebook Google Tweet This
URL:
BBcode:
HTML:

Перейти на форум:
Похожие темы
Топ 5 пользователей форума
Alex Alex (1,179)   Zaxap Zaxap (1,078)   Vova Vova (877)   Pisatel Pisatel (678)   util util (666)