Список пользователей

Ответы на вопросы, связанные с модами для phpBB 2.0.x, кроме относящихся к форуму Для авторов (phpBB 2.0.x).
newest

Список пользователей

Сообщение newest »

в данный момент хочу сделать наконец-то человеческий список пользователей...

нарыл ряд модов.. хочу начать с упорядочить по букве

как бы сделать еще упорядочение и по русским буквам??

Код: Выделить всё

#
#-----[ FIND ]--------------------------------------------
#
$sql = "SELECT username, user_id, user_viewemail, user_posts, user_regdate, user_from, user_website, user_email, user_icq, user_aim, user_yim, user_msnm, user_avatar, user_avatar_type, user_allowavatar 

#
#-----[ BEFORE, ADD ]-------------------------------------
#
//
// Set per-letter selection
//
$others_sql = '';
$select_letter = '';
for ($i = 97; $i <= 122; $i++)
{
	$others_sql .= " AND username NOT LIKE '" . chr($i) . "%' ";
	$select_letter .= ( $by_letter == chr($i) ) ? chr($i) . '&nbsp;' : '<a href="' . append_sid("memberlist.$phpEx?letter=" . chr($i) . "&mode=$mode&order=$sort_order&start=$start") . '">' . chr($i) . '</a>&nbsp;';
}
$select_letter .= ( $by_letter == 'others' ) ? $lang['Others'] . '&nbsp;' : '<a href="' . append_sid("memberlist.$phpEx?letter=others&mode=$mode&order=$sort_order&start=$start") . '">' . $lang['Others'] . '</a>&nbsp;';
$select_letter .= ( $by_letter == 'all' ) ? $lang['All'] : '<a href="' . append_sid("memberlist.$phpEx?letter=all&mode=$mode&order=$sort_order&start=$start") . '">' . $lang['All'] . '</a>';

$template->assign_vars(array(
	'L_SORT_PER_LETTER' => $lang['Sort_per_letter'],
	'S_LETTER_SELECT' => $select_letter,
	'S_LETTER_HIDDEN' => '<input type="hidden" name="letter" value="' . $by_letter . '">')
);

if($by_letter == 'all')
{
	$letter_sql = '';
}
else if($by_letter == 'others')
{
	$letter_sql = $others_sql;
}
else
{
	$letter_sql = " AND username LIKE '$by_letter%' ";
}
мне показалось что дополнить надо чтото здесь.. но я мог ошибиться..

Добавлено спустя 11 минут 49 секунд:

кроме того ищу мод, который ранжировал бы по возрастающей или убывающей при нажатии на заголовки колонок.. в частности по колонке пользователей.. не знаю правда как их потом совместить..
Аватара пользователя
[R: R@m$e$ :U]
phpBB Maniac
Сообщения: 1464
Зарегистрирован: 20 лет 3 месяца
Откуда: Novosibirsk,RU

Сообщение [R: R@m$e$ :U] »

newest
если ты хочешь, чтобы он еще и русский поддерживал, то вот..

Код: Выделить всё

###############################################
##	Mod Title:		Show usernames starting with a certain letter
##	Mod Version:	1.0
##	Author:			Vincent Grouls (macology@gmx.net)
##	Author, Secondary:	[R: R@m$e$ :U] (Ramses@phpBBGuru.net)
##	Description:	This enables people to search for users that have their name starting
##					with a specific letter. You can also choose "others" (meaning non-alpha
##					characters), and "all" (the regular list).
##
##	This mod is based on phpBB2 v2.0.3, but might work on any phpBB2.
## 
## 
##	Installation Level: Easy
##	Installation Time: 4-5 Minutes
##	Files To Edit: 3
##		memberlist.php
##		language/lang_english/lang_main.php
##		templates/SubSliver/memberlist_body.tpl
##
##	Included Files:
##		None
##
##	History
##		None
##
###############################################
##	This MOD is released under the GPL License. 
##	Intellectual Property is retained by the MOD Author(s) listed above 
###############################################

#
#-----[ OPEN ]--------------------------------------------
#
./memberlist.php

#
#-----[ FIND ]--------------------------------------------
#
//
// End session management
//

#
#-----[ AFTER, ADD ]--------------------------------------
#
// [start] Show usernames starting with a certain letter
if(isset($HTTP_POST_VARS['letter']))
{
	$by_letter = ($HTTP_POST_VARS['letter']) ? $HTTP_POST_VARS['letter'] : 'all';
}
else if(isset($HTTP_GET_VARS['letter']))
{
	$by_letter = ($HTTP_GET_VARS['letter']) ? $HTTP_GET_VARS['letter'] : 'all';
}
// [end] Show usernames starting with a certain letter

#
#-----[ FIND ]--------------------------------------------
#
		$order_by = "user_regdate $sort_order LIMIT $start, " . $board_config['topics_per_page'];
		break;
}

#
#-----[ AFTER, ADD ]--------------------------------------
#
// [start] Show usernames starting with a certain letter
//
// Set per-letter selection
//
$others_sql = '';
$select_letter = '';
for ($i = 65; $i <= 90; $i++)
{
	$others_sql .= " AND username NOT LIKE '" . chr($i) . "%' ";
	$select_letter .= ( $by_letter == chr($i) ) ? chr($i) : '<a href="' . append_sid("memberlist.$phpEx?letter=" . chr($i) . "&mode=$mode&order=$sort_order&start=$start") . '">' . chr($i) . '</a>&nbsp;';
}
$select_letter .= ( $by_letter == 'others' ) ? $lang['Others'] : '<a href="' . append_sid("memberlist.$phpEx?letter=others&mode=$mode&order=$sort_order&start=$start") . '">' . $lang['Others'] . '</a>&nbsp;';
$select_letter .= ( $by_letter == 'all' ) ? $lang['All'] : '<a href="' . append_sid("memberlist.$phpEx?letter=all&mode=$mode&order=$sort_order&start=$start") . '">' . $lang['All'] . '</a>';

$select_letter_rus = '';
for ($i = 192; $i <= 223; $i++)
{
	$others_sql .= " AND username NOT LIKE '" . chr($i) . "%' ";
	$select_letter_rus .= ( $by_letter == chr($i) ) ? chr($i) : '<a href="' . append_sid("memberlist.$phpEx?letter=" . chr($i) . "&mode=$mode&order=$sort_order&start=$start") . '">' . chr($i) . '</a>&nbsp;';
}
$select_letter_rus .= "<br />";

$template->assign_vars(array(
	'L_SORT_PER_LETTER' => $lang['Sort_per_letter'],
	'S_LETTER_SELECT' => $select_letter_rus . $select_letter,
	'S_LETTER_HIDDEN' => '<input type="hidden" name="letter" value="' . $by_letter . '">')
);

if($by_letter == 'all')
{
	$letter_sql = "";
}
else if($by_letter == 'others')
{
	$letter_sql = $others_sql;
}
else
{
	$letter_sql = " AND username LIKE '$by_letter%' ";
}
// [end] Show usernames starting with a certain letter


#
#-----[ FIND ]--------------------------------------------
#
$sql = "SELECT username, user_id, user_viewemail, user_posts, user_regdate, user_from, user_website, user_email, user_icq, user_aim, user_yim, user_msnm, user_avatar, user_avatar_type, user_allowavatar 
	FROM " . USERS_TABLE . "
	WHERE user_id <> " . ANONYMOUS . "
	ORDER BY $order_by";

#
#-----[ REPLACE WITH ]------------------------------------
#
// [start] Show usernames starting with a certain letter
$sql = "SELECT username, user_id, user_viewemail, user_posts, user_regdate, user_from, user_website, user_email, user_icq, user_aim, user_yim, user_msnm, user_avatar, user_avatar_type, user_allowavatar 
	FROM " . USERS_TABLE . "
	WHERE user_id <> " . ANONYMOUS . "$letter_sql
	ORDER BY $order_by";
// [end] Show usernames starting with a certain letter

#
#-----[ FIND ]--------------------------------------------
#
	$sql = "SELECT count(*) AS total
		FROM " . USERS_TABLE . "
		WHERE user_id <> " . ANONYMOUS;

#
#-----[ REPLACE WITH ]------------------------------------
#
	// [start] Show usernames starting with a certain letter
	$sql = "SELECT count(*) AS total
		FROM " . USERS_TABLE . "
		WHERE user_id <> " . ANONYMOUS . "$letter_sql";
	// [end] Show usernames starting with a certain letter


#
#-----[ FIND ]--------------------------------------------
#
		$pagination = generate_pagination("memberlist.$phpEx?mode=$mode&order=$sort_order", $total_members, $board_config['topics_per_page'], $start). '&nbsp;';

#
#-----[ REPLACE WITH ]--------------------------------------
#
		// [start] Show usernames starting with a certain letter
		$pagination = generate_pagination("memberlist.$phpEx?mode=$mode&order=$sort_order&letter=$by_letter", $total_members, $board_config['topics_per_page'], $start). '&nbsp;';
		// [end] Show usernames starting with a certain letter

#
#-----[ OPEN ]--------------------------------------------
#
# (make sure to edit this file for every language)
#
./language/lang_russian/lang_main.php

#
#-----[ FIND ]--------------------------------------------
#
?>

#
#-----[ BEFORE, ADD ]-------------------------------------
#
// [start] Show usernames starting with a certain letter
$lang['Sort_per_letter'] = "Показать имена начинающиеся с";
$lang['Others'] = "Остальные";
$lang['All'] = "Все";
// [end] Show usernames starting with a certain letter

#
#-----[ OPEN]--------------------------------------------
#
# (make sure to edit this file for every template)
#
./templates/subSilver/memberlist_body.tpl

#
#-----[ FIND ]--------------------------------------------
#
	<input type="submit" name="submit" value="{L_SUBMIT}" class="liteoption" />
	</span></td>
</tr>

#
#-----[ AFTER, ADD ]--------------------------------------
#
<tr>
	<td colspan="2" align="right" nowrap="nowrap"><span class="genmed">{L_SORT_PER_LETTER}:&nbsp;{S_LETTER_SELECT}{S_LETTER_HIDDEN}</span></td>
</tr>

#
#-----[ SAVE & CLOSE ALL FILES ]--------------------------
#


стиль оформления оставлен первого автора...

ПыСы надо было попросить... я для 95.ру давным-давно это делал... =)
Руководство пользователя | FAQ | Правила | Как устанавливать MOD'ы
ВОСПОЛЬЗУЙСЯ ПОИСКОМ, ТАМ ЕСТЬ БОЛЬШИНСТВО ОТВЕТОВ
ЕСЛИ НЕ ПОМОГЛО, ИСПОЛЬЗУЙ ШАБЛОН ЗАПРОСА, ПОМОГИ В РЕШЕНИИ ЗАДАЧИ
БЕСПЛАТНО ПОМОГУ ТОЛЬКО НА ФОРУМЕ!!! (ЛС НЕ В СЧЕТ)

Оставь благодарность, подтверди работоспособность совета.

ВСЕ ПРАВА НА МОДЫ ОТДАНЫ m157y
newest

Сообщение newest »

[R: R@m$e$ :U]
ограменное спасибо.. :P

Добавлено спустя 19 секунд:

где ты был ))
newest

Сообщение newest »

[R: R@m$e$ :U]
а еще есть чего по списку пользователей? )))

у меня на самом деле есть поле - Откуда. . там сортировка по первой букве не работает.. --- первая буква русская.. что делать не знаю.. как отсортировать.. попробовал сам покопать.. но .. не вышло..
Аватара пользователя
[R: R@m$e$ :U]
phpBB Maniac
Сообщения: 1464
Зарегистрирован: 20 лет 3 месяца
Откуда: Novosibirsk,RU

Сообщение [R: R@m$e$ :U] »

newest
где ты был ))
меня ни кто не просил... а выложить я забыл =) на днях переформатирую и выложу в модах... =)
сегодня посмотрю...
+)
Руководство пользователя | FAQ | Правила | Как устанавливать MOD'ы
ВОСПОЛЬЗУЙСЯ ПОИСКОМ, ТАМ ЕСТЬ БОЛЬШИНСТВО ОТВЕТОВ
ЕСЛИ НЕ ПОМОГЛО, ИСПОЛЬЗУЙ ШАБЛОН ЗАПРОСА, ПОМОГИ В РЕШЕНИИ ЗАДАЧИ
БЕСПЛАТНО ПОМОГУ ТОЛЬКО НА ФОРУМЕ!!! (ЛС НЕ В СЧЕТ)

Оставь благодарность, подтверди работоспособность совета.

ВСЕ ПРАВА НА МОДЫ ОТДАНЫ m157y
Аватара пользователя
[R: R@m$e$ :U]
phpBB Maniac
Сообщения: 1464
Зарегистрирован: 20 лет 3 месяца
Откуда: Novosibirsk,RU

Сообщение [R: R@m$e$ :U] »

newest
то что у меня есть... не уверен, что вся прямо связано с memberlist.php =)
Add Last User Post Date to Members List
Add Last User Visit Date to Members List
Filter member list
Instant Messenger List
Online status in memberlist
Online/Offline/Hidden Mod
Rank in memberlist
Post search in memberlist
Restrict Guest Access
Search in memberlist
Search Users
Staff Site
Staff with Short Bio
Memberlist Hidden User MOD
Member Country Flags (aka: Flags)
Hide Zero Posters
Last Visit
Active Members Only
=)
Руководство пользователя | FAQ | Правила | Как устанавливать MOD'ы
ВОСПОЛЬЗУЙСЯ ПОИСКОМ, ТАМ ЕСТЬ БОЛЬШИНСТВО ОТВЕТОВ
ЕСЛИ НЕ ПОМОГЛО, ИСПОЛЬЗУЙ ШАБЛОН ЗАПРОСА, ПОМОГИ В РЕШЕНИИ ЗАДАЧИ
БЕСПЛАТНО ПОМОГУ ТОЛЬКО НА ФОРУМЕ!!! (ЛС НЕ В СЧЕТ)

Оставь благодарность, подтверди работоспособность совета.

ВСЕ ПРАВА НА МОДЫ ОТДАНЫ m157y
newest

Сообщение newest »

[R: R@m$e$ :U]
да спасибо.. часть из этого у меня есть... кроме этого есть..

Код: Выделить всё

Memberlist Find User - у тя тоже есть похожее.. может это разные моды , не знаю..
Hide Unactive Member
Occupation in Memberlist
Members Per Memberlist Page
Avatar in Memberlist

но я повторюсь не могу найти мода.. для сортировки без выпадающего меню (как это работает по умолчанию).. вот ниже ..
Изображение

не могу такого мода найти.. все облазил.. скорее всего он был сделан на заказ... кроме того как я заметил.. при сортировке данных по русским данным появляются проблемы.. идет не правильная сортировка.. в частности если указывать в поле ОТКУДА - разные города.. и по ним делать сортировку.. она будет не правлиьно работать...
Аватара пользователя
[R: R@m$e$ :U]
phpBB Maniac
Сообщения: 1464
Зарегистрирован: 20 лет 3 месяца
Откуда: Novosibirsk,RU

Сообщение [R: R@m$e$ :U] »

newest
я уже тоже задумался над переделкой этой сортировки... тк мне тоже не очень нравится...

про города... это обработка mysql'ом такая... так что думаю с этим ни чего не поделать... разве что перейти на postgresql... она из бд лучше всех работает с кирилицей...
Руководство пользователя | FAQ | Правила | Как устанавливать MOD'ы
ВОСПОЛЬЗУЙСЯ ПОИСКОМ, ТАМ ЕСТЬ БОЛЬШИНСТВО ОТВЕТОВ
ЕСЛИ НЕ ПОМОГЛО, ИСПОЛЬЗУЙ ШАБЛОН ЗАПРОСА, ПОМОГИ В РЕШЕНИИ ЗАДАЧИ
БЕСПЛАТНО ПОМОГУ ТОЛЬКО НА ФОРУМЕ!!! (ЛС НЕ В СЧЕТ)

Оставь благодарность, подтверди работоспособность совета.

ВСЕ ПРАВА НА МОДЫ ОТДАНЫ m157y
newest

Сообщение newest »

[R: R@m$e$ :U] писал(а):я уже тоже задумался над переделкой этой сортировки... тк мне тоже не очень нравится...
ну обрати внимание на картинку что я слил выше.. могу дать ссылку к ребятам (там правда треба регистрация на форуме чтоб посмотреть список пользователей)..
[R: R@m$e$ :U] писал(а):это обработка mysql'ом такая
а вот тут думаю одно из двух или ты меня не понял.. или я тебя ))
и помоему первое )) вот смотри благодаря тому моду что ты сделал - можно выводить пользователей чьи имена начинаются с русских букв.. и если при этом сортировать по возрастанию или убыванию они без проблем сортируются ... почему то же самое не работает для поля откуда (скажу честно у меня н
это поле не Откуда.. я делал свое поле - факультет).. может проблема в этом.. что при добавлении нового поля я чтото не доделал?? в общем.. что делать то))???

Добавлено спустя 2 минуты 53 секунды:

вот я только что отсортировал по этому своему полю.. получилась такая чехорда..

Код: Выделить всё

мировой политики
политологии
права
психологии
истории
экономики
социологии
неправильно как-то... почему :?
Аватара пользователя
[R: R@m$e$ :U]
phpBB Maniac
Сообщения: 1464
Зарегистрирован: 20 лет 3 месяца
Откуда: Novosibirsk,RU

Сообщение [R: R@m$e$ :U] »

newest
да у меня поле откуда тоже криво сортируется... а с никами не пробовал... но в принципе сама бд mysql не очень хорошо работает с кирилицей... но если пользователи сортируются нормально, то и это должно сортироваться... значит буду на этой неделе мучать =)
Руководство пользователя | FAQ | Правила | Как устанавливать MOD'ы
ВОСПОЛЬЗУЙСЯ ПОИСКОМ, ТАМ ЕСТЬ БОЛЬШИНСТВО ОТВЕТОВ
ЕСЛИ НЕ ПОМОГЛО, ИСПОЛЬЗУЙ ШАБЛОН ЗАПРОСА, ПОМОГИ В РЕШЕНИИ ЗАДАЧИ
БЕСПЛАТНО ПОМОГУ ТОЛЬКО НА ФОРУМЕ!!! (ЛС НЕ В СЧЕТ)

Оставь благодарность, подтверди работоспособность совета.

ВСЕ ПРАВА НА МОДЫ ОТДАНЫ m157y
Аватара пользователя
natali
phpBB 2.0.1
Сообщения: 293
Зарегистрирован: 19 лет 11 месяцев
Откуда: Киев

Сообщение natali »

[R: R@m$e$ :U] писал(а):я уже тоже задумался над переделкой этой сортировки
[R: R@m$e$ :U] дальше задумок дело пошло? :)
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Зарегистрирован: 21 год 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

Есть в php две отличные функции - natsort и natcasesort ;)
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
[R: R@m$e$ :U]
phpBB Maniac
Сообщения: 1464
Зарегистрирован: 20 лет 3 месяца
Откуда: Novosibirsk,RU

Сообщение [R: R@m$e$ :U] »

natali
к сожалению не пошло из-за нехватки времени... тк не платит ни кто делаю в свободное время... а сейчас оно занято немного другим...
Руководство пользователя | FAQ | Правила | Как устанавливать MOD'ы
ВОСПОЛЬЗУЙСЯ ПОИСКОМ, ТАМ ЕСТЬ БОЛЬШИНСТВО ОТВЕТОВ
ЕСЛИ НЕ ПОМОГЛО, ИСПОЛЬЗУЙ ШАБЛОН ЗАПРОСА, ПОМОГИ В РЕШЕНИИ ЗАДАЧИ
БЕСПЛАТНО ПОМОГУ ТОЛЬКО НА ФОРУМЕ!!! (ЛС НЕ В СЧЕТ)

Оставь благодарность, подтверди работоспособность совета.

ВСЕ ПРАВА НА МОДЫ ОТДАНЫ m157y
Аватара пользователя
Alexis1805
phpBB 1.4.3
Сообщения: 87
Зарегистрирован: 20 лет 2 месяца

Сообщение Alexis1805 »

Может кому и понадобится. Я заметил, что на некоторых форумах сортировка имен не корректно работает, если имена пользователей написаны в нижнем и верхнем регистре, то есть начинаются с маленьких и больших буквах. Вот один из вариантов решения этой проблемы.
В файле memberlist.php
Найти:

Код: Выделить всё

$letter_sql = " AND username LIKE '$by_letter%' ";
Заменить на:

Код: Выделить всё

$letter_sql = " AND Upper(username) LIKE Upper('$by_letter%') ";
Найти:

Код: Выделить всё

$order_by = "username $sort_order LIMIT $start, " . $board_config['topics_per_page'];
Заменить на:

Код: Выделить всё

$order_by = "upper(username) $sort_order LIMIT $start, " . $board_config['topics_per_page'];
Сделал у себя, заработала как надо! :)
Iftin
phpBB 2.0.7
Сообщения: 573
Зарегистрирован: 19 лет 11 месяцев
Откуда: Moscow

Сообщение Iftin »

Alexis1805

Код: Выделить всё

$letter_sql = " AND username LIKE '$by_letter%' ";
не смог найти вообще в версии 2019... 8)

Вернуться в «Поддержка модов для phpBB 2.0.x»