Поиск пользователей по городу

У вас есть идея для расширения функциональности phpBB 3.0.x? Расскажите о ней здесь!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
flash93rus
phpBB 1.0.0
Сообщения: 5
Стаж: 16 лет 9 месяцев
Благодарил (а): 2 раза

Поиск пользователей по городу

Сообщение flash93rus »

Помогите плз как можно реализовать Поиск пользователей по Городу!!!
Чтобы в этой форме добавилось окно для воода города ну и сооветственно поиск и вывод пользователей только по городу!!!
Заранее всем Спасибо!

Изображение
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Поиск пользователей по городу

Сообщение Sheer »

В виде мода не оформлено, нужно просто заменить файлы memberlist.php, ..\styles\subsilver2\memberlist_body.html и ..\styles\subsilver2\memberlist_search.html
ну и поковыряться с языковыми переменными чутка (не помню уже, что, куда добавлял)
Изображение
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Поиск пользователей по городу

Сообщение Sheer »

В общем так
Файл memberlist.php

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

Найти 			
$icq		= request_var('icq', '');
После вставить
$from		= request_var('from', '', true);
Найти 			
$sql_where .= ($icq) ? ' AND u.user_icq ' . $db->sql_like_expression(str_replace('*', $db->any_char, $icq)) . ' ' : '';
После вставить
		if ($from)
		{ 
			$i = 0;
			$pieces = explode(" ", $from);
			$sql_where = "AND (u.user_from LIKE '";
			do
			{
				if ($i == 0)
				{
				$pieces[$i] = str_replace('*', '%', trim($pieces[$i]));
				$sql_where .= str_replace("\'", "''", $pieces[$i]);
				$sql_where .= "' ";
       			}
				else
				{
				  $sql_where .= " OR u.user_from LIKE '";
				  $pieces[$i] = str_replace('*', '%', trim($pieces[$i]));
				  $sql_where .= str_replace("\'", "''", $pieces[$i]);
				  $sql_where .= "'";
				}
				$i++;
			} while ($pieces[$i]);
		$sql_where .= ")";
		}
Найти
'icq'			=> array('icq', ''),
После вставить 
'from'			=> array('from', '', true),
Найти
'IP'		=> $ipdomain,
После вставить
'LOCATION'	=> $from,
'L_EXPLAIN'	=> Вы можете задавать несколько аргументов поиска, разделив их пробелами, например указать: <b>rig* риг*</b>. Используйте * в качестве шаблона. Обратите внимане, что можно использовать такие шаблоны, например <b>*пляв*,
запомните, что поиск по аргументам <b>*пляв, пляв* и *пляв*<b>, выдаст различные результаты.",
Файл ..\styles\subsilver2\template\memberlist_search.html

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

Найти 		
	<td class="row1"><b class="genmed">{L_LOCATION}:</b></td>
После вставить
	<td class="row2"><input class="post" type="text" name="from" value="{LOCATION}" /></td>
Найти	
	<td class="row1"><b class="genmed">{L_MSNM}:</b></td>
	<td class="row2"><input class="post" type="text" name="msn" value="{MSNM}" /></td>

Заменить на
	<td colspan="2" class="row2"><class = ="gensmall">{L_EXPLAIN}</td>
apylyov
phpBB 1.4.4
Сообщения: 139
Стаж: 17 лет 8 месяцев
Благодарил (а): 4 раза

Re: Поиск пользователей по городу

Сообщение apylyov »

Sheer писал(а): <td class="row1"><b class="genmed">{L_LOCATION}:</b></td>
а у меня нет такой строчки в этом файле..
как быть?
Аватара пользователя
DK7
Former team member
Сообщения: 1008
Стаж: 20 лет 2 месяца
Откуда: Кишинёв
Благодарил (а): 3 раза
Поблагодарили: 25 раз

Re: Поиск пользователей по городу

Сообщение DK7 »

ищите по {L_LOCATION}:
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3365
Стаж: 17 лет 6 месяцев
Благодарил (а): 37 раз
Поблагодарили: 1455 раз

Re: Поиск пользователей по городу

Сообщение Nekstati »

Да тут ошибки. Автор, может, придёт, исправит. Примерно так:

Subsilver2 — найти

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

   <td class="row1"><b class="genmed">{L_MSNM}:</b></td>
   <td class="row2"><input class="post" type="text" name="msn" value="{MSNM}" /></td>
После вставить

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

   <td class="row1"><b class="genmed">{L_LOCATION}:</b></td>
   <td class="row2"><input class="post" type="text" name="from" value="{LOCATION}" /></td>
Prosilver — найти

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

	<dl>
		<dt><label for="msn">{L_MSNM}:</label></dt>
		<dd><input type="text" name="msn" id="msn" value="{MSNM}" class="inputbox" /></dd>
	</dl>
После вставить

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

	<dl>
		<dt><label for="location">{L_LOCATION}:</label></dt>
		<dd><input type="text" name="from" id="location" value="{LOCATION}" class="inputbox" /></dd>
	</dl>
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Поиск пользователей по городу

Сообщение Sheer »

Поторопился... :oops: Виноват, исправлюсь
Subsilver2, версия поставки 3.0.4 — найти строки 99, 100

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

	<td class="row1"><b class="genmed">{L_YIM}:</b></td>
	<td class="row2"><input class="post" type="text" name="yahoo" value="{YAHOO}" /></td>
Заменить на

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

	<td class="row1"><b class="genmed">{L_LOCATION}:</b></td>
	<td class="row2"><input class="post" type="text" name="from" value="{LOCATION}" /></td>
Найти строки 109, 110

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

	<td class="row1"><b class="genmed">{L_MSNM}:</b></td>
	<td class="row2"><input class="post" type="text" name="msn" value="{MSNM}" /></td>
Заменить на

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

	<td colspan="2" class="row2"><class = "gensmall">{L_EXPLAIN}</td>
За prosilver не скажу, не переделывал, ибо не использую, но наверное примерно так же.
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3365
Стаж: 17 лет 6 месяцев
Благодарил (а): 37 раз
Поблагодарили: 1455 раз

Re: Поиск пользователей по городу

Сообщение Nekstati »

Sheer, если бы вы ещё сделали поиск регистронезависимым — то было бы совсем хорошо.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Поиск пользователей по городу

Сообщение Sheer »

Дык.... (в задумчивости). Он вроде и так регистронезависимый, это делает вроде как директива sql LIKE.

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

SELECT *  FROM `phpbb_users` WHERE `user_from` LIKE  'рига' 
Смотрите картинку: в поле запроса написано "рига", а в результатах поиска получаем, то, что ввел пользователь в профиле: "Рига". Вот если бы сделать независимо от того, как оформлен запрос, на кириллице или на латинице, то да. Например "рига" или "riga". Хотя с этой задачей справляется и шаблон "рига riga". Другое дело, что пользователи бывают туповаты, и не всегда могут правильно оформить запрос.
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3365
Стаж: 17 лет 6 месяцев
Благодарил (а): 37 раз
Поблагодарили: 1455 раз

Re: Поиск пользователей по городу

Сообщение Nekstati »

Зависимый, увы. «Москва» и «москва» для него разные слова. Проверялось на phpBB 3.0.7, MySQL 5 (Denwer).
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Поиск пользователей по городу

Сообщение Sheer »

А как у тебя поиск осуществляется, можно sql-директивку глянуть.
Nekstati писал(а):Зависимый, увы. «Москва» и «москва» для него разные слова.
А у меня - нет. На серваке http://www.aquaforum.lv/info.php PHP Version 5.2.13-pl0-gentoo, мускул 5.0.90.
На локалке Denwer PHP Version 4.4.0

Изображение
Аватара пользователя
MIT
Former team member
Сообщения: 2500
Стаж: 17 лет 6 месяцев
Откуда: 56°20′02″ с. ш. 36°42′45″ в. д.
Благодарил (а): 3 раза
Поблагодарили: 351 раз

Re: Поиск пользователей по городу

Сообщение MIT »

Всё дело в collation`е — там вроде бинарное сравнение по умолчанию, попробуй что-нибудь типа

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

LIKE ... COLLATE utf8_general_ci
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3365
Стаж: 17 лет 6 месяцев
Благодарил (а): 37 раз
Поблагодарили: 1455 раз

Re: Поиск пользователей по городу

Сообщение Nekstati »

MIT, Изображение, робит.

Добавлено спустя 11 минут 55 секунд:
В общем, я сделала так:

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

//=== Найти
$sql_where .= ($icq) ? ' AND u.user_icq ' . $db->sql_like_expression(str_replace('*', $db->any_char, $icq)) . ' ' : '';
//=== После вставить
$sql_where .= ($from) ? ' AND u.user_from ' . $db->sql_like_expression(str_replace('*', $db->any_char, $from)) . ' COLLATE utf8_general_ci ' : ''; 
Правда, поиск по нескольким аргументам в таком случае не работает, зато и {L_EXPLAIN} не нужен.
Аватара пользователя
MIT
Former team member
Сообщения: 2500
Стаж: 17 лет 6 месяцев
Откуда: 56°20′02″ с. ш. 36°42′45″ в. д.
Благодарил (а): 3 раза
Поблагодарили: 351 раз

Re: Поиск пользователей по городу

Сообщение MIT »

Sheer
Спаси и сохрани тебя и твой форум. Аминь.

От SQL инъекций защищаться собираешься?

Добавлено спустя 1 минуту 56 секунд:
Nekstati
Надеюсь ты не на реальном форуме эту штуку поставила?
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3365
Стаж: 17 лет 6 месяцев
Благодарил (а): 37 раз
Поблагодарили: 1455 раз

Re: Поиск пользователей по городу

Сообщение Nekstati »

Пока нет. 0_0 Спужал.

Вернуться в «Запросы модов для phpBB 3.0.x»