Вывод списка пользователей
|
bakzz |
Опубликовано 12.11.2012 13:21
|

Пользователь

Сообщений: 55
Зарегистрирован: 05.09.2012 19:32
|
Подскажите php код для вывода списка пользователей из определенной категории. |
|
|
|
Chief |
Опубликовано 12.11.2012 14:02
|

Персонал сайта

Сообщений: 206
Зарегистрирован: 22.06.2011 15:00
|
What is определенная категория? Из определенной пользовательской группы типа profile.php?group_id=42 ?
У богатых людей — большая библиотека. У бедных людей — большой телевизор.
|
|
|
|
jikaka |
Опубликовано 12.11.2012 14:19
|

Супер Администратор
 Разработчики

Сообщений: 4849
Зарегистрирован: 26.07.2010 12:10
|
посмотри вывод юзеров в файле members.php и поставь условие на id группы
|
|
|
|
bakzz |
Опубликовано 12.11.2012 15:24
|

Пользователь

Сообщений: 55
Зарегистрирован: 05.09.2012 19:32
|
Chief написал:
What is определенная категория? Из определенной пользовательской группы типа profile.php?group_id=42 ?
да из группы, group_id=8
но вывести нужно в кастом страницу через <?php ?> пытался сделать по антологии с profile.php, но что-то не получается  |
|
|
|
Rush |
Опубликовано 12.11.2012 15:39
|

Администратор
 Разработчики
 Группа поддержки

Сообщений: 1418
Зарегистрирован: 31.08.2010 14:41
|
мне даже самому интересно посмотреть на элегантное решение этой проблемы. ведь группы юзера храняться по традиции склеенные в поле. соответственно прямым запросом забрать их нельзя. разве что через LIKE
|
|
|
|
Vova |
Опубликовано 12.11.2012 15:43
|

Ветеран

Сообщений: 877
Зарегистрирован: 05.08.2011 11:53
|
GeSHi: PHP if (!isset($_GET['rowstart']) || !isnum ($_GET['rowstart'])) { $_GET['rowstart'] = 0; } $result = dbquery("SELECT * FROM ".DB_USER_GROUPS." WHERE group_id='".$_GET['group_id']."'"); if (dbrows($result)) { $data = dbarray($result); $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"); $rows = dbrows(dbquery("SELECT user_id FROM ".DB_USERS." WHERE user_groups REGEXP('^\\\.{$_GET['group_id']}$|\\\.{$_GET['group_id']}\\\.|\\\.{$_GET['group_id']}$')")); if ($rows != 0) { opentable($data['group_name']); echo "<table cellpadding='0' cellspacing='0' width='100%'>\n<tr>\n"; echo "<td align='center' colspan='2' class='tbl1'><strong>".$data['group_name']."</strong> (".sprintf((dbrows ($result) == 1 ? "Пользователь" : "Пользователи"), dbrows ($result)).")</td>\n"; echo "</tr>\n<tr>\n"; echo "<td class='tbl2'><strong>Группы пользователей</strong></td>\n"; echo "<td align='center' width='1%' class='tbl2' style='white-space:nowrap'><strong>Тип</strong></td>\n"; echo "</tr>\n"; while ($data = dbarray($result)) { $cell_color = ($i % 2 == 0 ? "tbl1" : "tbl2"); $i++; echo "<tr>\n<td class='".$cell_color."'>\n".profile_link($data['user_id'], $data['user_name'])."</td>\n"; echo "<td align='center' width='1%' class='".$cell_color."' style='white-space:nowrap'>".getuserlevel($data['user_level'])."</td>\n</tr>"; } echo "</table>\n"; closetable(); 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"; } } else { redirect(BASEDIR); } } else { redirect(BASEDIR); }
Добавлено за 0.032 секунд, используя GeSHi 1.0.8.10
|
|
|
|
mishqa35 |
Опубликовано 12.11.2012 15:48
|

Опытный пользователь

Сообщений: 307
Зарегистрирован: 04.01.2011 18:50
|
хм.. А прочесть список пользователей и отобрать тех у кого user_groups=8 не как?
ps; чуть чуть опоздал))
|
|
|
|
Vova |
Опубликовано 12.11.2012 16:18
|

Ветеран

Сообщений: 877
Зарегистрирован: 05.08.2011 11:53
|
GeSHi: PHP $result = dbquery("SELECT * FROM ".DB_USER_GROUPS." WHERE group_id='8'"); if (dbrows($result)) { $data = dbarray($result); $result = dbquery("SELECT * FROM ".DB_USERS." WHERE user_groups REGEXP('^\\\.{8}$|\\\.{8}\\\.|\\\.{8}$') ORDER BY user_name DESC"); opentable($data['group_name']); echo "<table cellpadding='0' cellspacing='0' width='100%'>\n<tr>\n"; echo "<td align='center' colspan='2' class='tbl1'><strong>".$data['group_name']."</strong> (".sprintf((dbrows ($result) == 1 ? "Пользователь" : "Пользователи"), dbrows ($result)).")</td>\n"; echo "</tr>\n<tr>\n"; echo "<td class='tbl2'><strong>Группы пользователей</strong></td>\n"; echo "<td align='center' width='1%' class='tbl2' style='white-space:nowrap'><strong>Тип</strong></td>\n"; echo "</tr>\n"; while ($data = dbarray($result)) { $cell_color = ($i % 2 == 0 ? "tbl1" : "tbl2"); $i++; echo "<tr>\n<td class='".$cell_color."'>\n".profile_link($data['user_id'], $data['user_name'])."</td>\n"; echo "<td align='center' width='1%' class='".$cell_color."' style='white-space:nowrap'>".getuserlevel($data['user_level'])."</td>\n</tr>"; } echo "</table>\n"; closetable(); } else { redirect(BASEDIR); }
Добавлено за 0.020 секунд, используя GeSHi 1.0.8.10
Изменил(а) Vova, 12.11.2012 16:24
|
|
x1
|
|
|
|
bakzz |
Опубликовано 12.11.2012 16:37
|

Пользователь

Сообщений: 55
Зарегистрирован: 05.09.2012 19:32
|
Вова спасибо.
Я вот так и делал, но не выводит почему-то ((
те создает таблицу с заголовком нужной группы, а самого списка юзеров нет, не пойму что ни так. |
|
|
|
Vova |
Опубликовано 12.11.2012 16:51
|

Ветеран

Сообщений: 877
Зарегистрирован: 05.08.2011 11:53
|
структура таблицы:
GeSHi: MySQL
Добавлено за 0.008 секунд, используя GeSHi 1.0.8.10
|
|
|
|
mishqa35 |
Опубликовано 12.11.2012 17:48
|

Опытный пользователь

Сообщений: 307
Зарегистрирован: 04.01.2011 18:50
|
Как то так
$group_id = "1"; // вбиваещ ид своей группы
GeSHi: PHP<?php require_once "maincore.php"; require_once THEMES."templates/header.php"; include LOCALE.LOCALESET."user_fields.php"; $group_id = "1"; // вбиваещ ид своей группы $result = dbquery("SELECT group_id, group_name FROM ".DB_USER_GROUPS." WHERE group_id='".$group_id."'"); if (dbrows($result)) { $data = dbarray($result); $result = dbquery( "SELECT user_id, user_name, user_level, user_status FROM ".DB_USERS." WHERE user_groups REGEXP('^\\\.{$group_id}$|\\\.{$group_id}\\\.|\\\.{$group_id}$') ORDER BY user_level DESC, user_name" ); opentable($locale['u110']); echo "<table cellpadding='0' cellspacing='0' width='100%'>\n<tr>\n"; echo "<td align='center' colspan='2' class='tbl1'><strong>".$data['group_name']."</strong>\n"; echo "(".sprintf((dbrows ($result) == 1 ? $locale['u111'] : $locale['u112']), dbrows ($result)).")"; echo "</td>\n</tr>\n<tr>\n"; if (dbrows($result)) { echo "<td class='tbl2'><strong>".$locale['u113']."</strong></td>\n"; echo "<td align='center' width='1%' class='tbl2' style='white-space:nowrap'><strong>".$locale['u114']."</strong></td>\n"; echo "</tr>\n"; while ($data = dbarray($result)) { $cell_color = ($i % 2 == 0 ? "tbl1" : "tbl2"); $i++; echo "<tr>\n<td class='".$cell_color."'>\n".profile_link($data['user_id'], $data['user_name'], $data['user_status'])."</td>\n"; echo "<td align='center' width='1%' class='$cell_color' style='white-space:nowrap'>".getuserlevel($data['user_level'])."</td>\n</tr>"; } } echo "</table>\n"; } else { redirect("index.php"); } closetable(); require_once THEMES."templates/footer.php"; ?>
Добавлено за 0.026 секунд, используя GeSHi 1.0.8.10
|
|
x1
|
|
|
|
Rush |
Опубликовано 12.11.2012 19:47
|

Администратор
 Разработчики
 Группа поддержки

Сообщений: 1418
Зарегистрирован: 31.08.2010 14:41
|
Vova написал:
GeSHi: PHP $result = dbquery("SELECT * FROM ".DB_USER_GROUPS." WHERE group_id='8'"); if (dbrows($result)) { $data = dbarray($result); $result = dbquery("SELECT * FROM ".DB_USERS." WHERE user_groups REGEXP('^\\\.{8}$|\\\.{8}\\\.|\\\.{8}$') ORDER BY user_name DESC"); opentable($data['group_name']); echo "<table cellpadding='0' cellspacing='0' width='100%'>\n<tr>\n"; echo "<td align='center' colspan='2' class='tbl1'><strong>".$data['group_name']."</strong> (".sprintf((dbrows ($result) == 1 ? "Пользователь" : "Пользователи"), dbrows ($result)).")</td>\n"; echo "</tr>\n<tr>\n"; echo "<td class='tbl2'><strong>Группы пользователей</strong></td>\n"; echo "<td align='center' width='1%' class='tbl2' style='white-space:nowrap'><strong>Тип</strong></td>\n"; echo "</tr>\n"; while ($data = dbarray($result)) { $cell_color = ($i % 2 == 0 ? "tbl1" : "tbl2"); $i++; echo "<tr>\n<td class='".$cell_color."'>\n".profile_link($data['user_id'], $data['user_name'])."</td>\n"; echo "<td align='center' width='1%' class='".$cell_color."' style='white-space:nowrap'>".getuserlevel($data['user_level'])."</td>\n</tr>"; } echo "</table>\n"; closetable(); } else { redirect(BASEDIR); }
Добавлено за 0.025 секунд, используя GeSHi 1.0.8.10
о боже, выколите мне глаза. мало того что просто regexp, так еще и regexp в sql запросе. о боги...
|
|
x1
x1
|
|
|
|
Chief |
Опубликовано 12.11.2012 20:26
|

Персонал сайта

Сообщений: 206
Зарегистрирован: 22.06.2011 15:00
|
Rush, regexp в sql запросе Собственно это почти слово в слово (за вычетом ORDER BY user_level) оригинальный запрос из фьюжена, made by Starefossen.
У богатых людей — большая библиотека. У бедных людей — большой телевизор.
|
|
|
|
bakzz |
Опубликовано 12.11.2012 20:28
|

Пользователь

Сообщений: 55
Зарегистрирован: 05.09.2012 19:32
|
о боже, выколите мне глаза. мало того что просто regexp, так еще и regexp в sql запросе. о боги...
ну так покажите как надо  |
|
|
|
Vova |
Опубликовано 12.11.2012 20:48
|

Ветеран

Сообщений: 877
Зарегистрирован: 05.08.2011 11:53
|
Rush написал:
Vova написал:
GeSHi: PHP $result = dbquery("SELECT * FROM ".DB_USER_GROUPS." WHERE group_id='8'"); if (dbrows($result)) { $data = dbarray($result); $result = dbquery("SELECT * FROM ".DB_USERS." WHERE user_groups REGEXP('^\\\.{8}$|\\\.{8}\\\.|\\\.{8}$') ORDER BY user_name DESC"); opentable($data['group_name']); echo "<table cellpadding='0' cellspacing='0' width='100%'>\n<tr>\n"; echo "<td align='center' colspan='2' class='tbl1'><strong>".$data['group_name']."</strong> (".sprintf((dbrows ($result) == 1 ? "Пользователь" : "Пользователи"), dbrows ($result)).")</td>\n"; echo "</tr>\n<tr>\n"; echo "<td class='tbl2'><strong>Группы пользователей</strong></td>\n"; echo "<td align='center' width='1%' class='tbl2' style='white-space:nowrap'><strong>Тип</strong></td>\n"; echo "</tr>\n"; while ($data = dbarray($result)) { $cell_color = ($i % 2 == 0 ? "tbl1" : "tbl2"); $i++; echo "<tr>\n<td class='".$cell_color."'>\n".profile_link($data['user_id'], $data['user_name'])."</td>\n"; echo "<td align='center' width='1%' class='".$cell_color."' style='white-space:nowrap'>".getuserlevel($data['user_level'])."</td>\n</tr>"; } echo "</table>\n"; closetable(); } else { redirect(BASEDIR); }
Добавлено за 0.027 секунд, используя GeSHi 1.0.8.10
о боже, выколите мне глаза. мало того что просто regexp, так еще и regexp в sql запросе. о боги...
не хочу тебя пугать но это код с офф. сборки. 7.02.03
|
|
|
|
Rush |
Опубликовано 12.11.2012 22:13
|

Администратор
 Разработчики
 Группа поддержки

Сообщений: 1418
Зарегистрирован: 31.08.2010 14:41
|
не хочу тя расстраивать, но я догадался. это не меняет ситуации.
имхо лучше уже использовать LIKE, нативные операторы всяко лучше регулярок.
а в идеале конечно для связи много ко многим надо использовать промежуточную таблицу, а не плодить такой быдлокод.
|
|
x1
|
|
|
|
Polarfox |
Опубликовано 13.11.2012 16:06
|

Администратор
 Разработчики
 Группа поддержки

Сообщений: 3387
Зарегистрирован: 20.08.2010 14:03
|
Rush, но пока то без вариантов, можешь придумать что нить свое, в целом тут одна страница только не сильно просядет серв.
Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле. | Вся бесплатная тех. поддержка только на форуме
|
|
|