Уважаемые пользователи, по техническим причинам загрузка файлов временно недоступна. Приносим извинения за временные неудобства.

Поиск по комментариям сообщений

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

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Vova_OB
phpBB 2.0.2
Сообщения: 310
Стаж: 16 лет 4 месяца
Откуда: Kiev Ukraine
Благодарил (а): 74 раза
Поблагодарили: 8 раз

Поиск по комментариям сообщений

Сообщение Vova_OB »

Добрый вечер
поставил на форум модуль который позволяет комментировать сообщения форума https://www.phpbb.com/community/viewtop ... &t=2169115.
Вопрос в том как сделать отдельную страницу для поиска текста в комментариях или добавить в существующую функции поиска возможность искать в комментариях текст.
нужно чтобы в результате поиска выводило комментарии с силками на сообщения в которых эти комментарии
не нашел мануалов по phpbb custom search functions

за ранее благодарен.
Последний раз редактировалось Vova_OB 23.11.2013 17:27, всего редактировалось 1 раз.
Аватара пользователя
владимир1983
phpBB 3.2.6
Сообщения: 5954
Стаж: 16 лет 5 месяцев
Откуда: Сергиев Посад
Благодарил (а): 373 раза
Поблагодарили: 727 раз

Re: Поиск по комментариям сообщений

Сообщение владимир1983 »

Vova_OB писал(а):Борый вечер
У кого как...
А что стандартный поиск по комментариям не ищет?
За ваши деньги решу ваши проблемы. Стучи в ЛС.
Нет человека - нет проблемы. (c)
Аватара пользователя
Vova_OB
phpBB 2.0.2
Сообщения: 310
Стаж: 16 лет 4 месяца
Откуда: Kiev Ukraine
Благодарил (а): 74 раза
Поблагодарили: 8 раз

Re: Поиск по комментариям сообщений

Сообщение Vova_OB »

владимир1983 писал(а):А что стандартный поиск по комментариям не ищет?
Нет не ищет, поскольку в базу новая таблица добавлена, и комментрии в ней хранятся
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11372
Стаж: 16 лет 9 месяцев
Благодарил (а): 1832 раза
Поблагодарили: 1358 раз

Re: Поиск по комментариям сообщений

Сообщение Пчелкин »

Vova_OB писал(а):Нет не ищет
А откуда ты в этом уверен? Ты таблицу поисковых индексов после обновлял? Точно не появилось в поиске?
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Аватара пользователя
Vova_OB
phpBB 2.0.2
Сообщения: 310
Стаж: 16 лет 4 месяца
Откуда: Kiev Ukraine
Благодарил (а): 74 раза
Поблагодарили: 8 раз

Re: Поиск по комментариям сообщений

Сообщение Vova_OB »

Попробую объяснить.
Установленный модуль позволяет комментировать и тему и сообщения в теме(ответы темы). Когда в вожу в строку общего поиска по форуму текст который совпадает с текстом в комментарие то он не находит сообщения в котором комментарий. И нужно или добавить в поиск возможность поиска по комментариям в сообщениях форума или сделать отдельную страницу на которой можно вводить искомое по комментариям и будет выводится список сопадений с силками на сообщения в которых эти комментарии.

Разработчиком мода изначально это не было предусмотрено в коде модуля ни одного слова search.
Аватара пользователя
Vova_OB
phpBB 2.0.2
Сообщения: 310
Стаж: 16 лет 4 месяца
Откуда: Kiev Ukraine
Благодарил (а): 74 раза
Поблагодарили: 8 раз

Re: Поиск по комментариям сообщений

Сообщение Vova_OB »

Сделал php html версию поиска, работает отлично но переделать в формат phpbb3 не удается.Скажите в чем ошибки.Вот исходный скрипт первый который работает и searchin.php и searchin.html для форума которые не работают
Рабочий который ножно переделать для форума:

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

<?php

$db_hostname = '';
$db_username = '';
$db_password = '';
$db_database = '';


// Database Connection String
$con = mysql_connect($db_hostname,$db_username,$db_password);
mysql_set_charset('utf8',$con);
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db($db_database, $con);
?>

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
<form action="" method="post">  
<input type="text" name="term" /><input type="submit" value="Submit" />  
</form>  
 
<?php
if (!empty($_REQUEST['term'])) {
// COMMENTS_TABLE phpbb3_comments fields(id, post_id, text)
//$term = mysql_real_escape_string($_REQUEST['term']);   
$term = $_REQUEST['term'];   
$sql = "SELECT * FROM phpbb3_comments WHERE text  LIKE '%".$term ."%' COLLATE utf8_general_ci";
//$sql = "SELECT * FROM liam WHERE Description LIKE '%".$term."%'"; 
$r_query = mysql_query($sql); 
echo '<table border="1">';
echo '<tr><td>Comment ID</td><td>Post ID</td><td>Comment</td></tr>';
while ($row = mysql_fetch_array($r_query)){  
echo '<tr><td>' .$row['id'].'</td>';  
echo '<td>' .$row['post_id'].'</td>';  
echo '<td>'.$row['text'].'</td></tr>';    
}  
echo '</table>';
}
?>

    </body>
</html>
Файл форума searchin.php:

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

<?php

define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup(array('posting', 'search'));

//$bb_code	= request_var('bbc', '');
$submit		= request_var('submit', false);
$start 		= request_var('s', 0);
$term =  request_var('term','');  

if ($submit)

//$sql = "SELECT * FROM phpbb3_comments WHERE text  LIKE '%".$term ."%' COLLATE utf8_general_ci";
{
	$sql = 'SELECT * FROM  '. COMMENTS_TABLE .' WHERE text LIKE "%'.$term .'%"  COLLATE utf8_general_ci';
	$result = $db->sql_query($sql);
	
	while ($row = $db->sql_fetchrow($result))
	{
		
		$template->assign_block_vars('row', array(
		   
		    'COMMENT_ID'	=> $row['id'],
            'POST_ID'	=> $row['post_id'],
		    'COMMENT'	=> $row['text'],
		    
		));
	}

}

$template->assign_vars(array(
	'TERM'	=> $term ,
	'S_ACTION'	=> append_sid("{$phpbb_root_path}searchin.$phpEx"),

));

// Output the page
page_header('');

$template->set_filenames(array(
	'body' => 'searchin.html')
);

page_footer();

?>
Файл форума searchin.html:

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

<!-- INCLUDE overall_header.html -->
<h3>Search in comments</h3><br />
<form action="{S_ACTION}" method="post">  
   <input type="text" name="{TERM}" />
   <input type="submit" name="submit"  value="{L_SUBMIT}"  class="btnmain"/>  
</form> 
<table class="tablebg" width="50%" cellspacing="1" cellpadding="4" border="0">
<tr> 
	<th >{L_COMMENT_ID}</th><th >{L_POST_ID}</th><th >{L_COMMENT}</th>
</tr>
<!-- IF .row -->
<!-- BEGIN row -->
	<tr><td class="row1">{row.COMMENT_ID}</td><td> {row.POST_ID}</td><td>{row.COMMENT}</td></tr>
<!-- END row -->
<br /><hr />
<!-- ELSE -->
<p class="error"><b>{L_NO_SEARCH_RESULTS}</b></p>
<!-- ENDIF -->
</table>
<!-- INCLUDE overall_footer.html -->
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 8 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Поиск по комментариям сообщений

Сообщение Sheer »

Vova_OB
Пока не поздно, обязательно замените

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

$sql = 'SELECT * FROM  '. COMMENTS_TABLE .' WHERE text LIKE "%'.$term .'%"  COLLATE utf8_general_ci';
на

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

$sql = 'SELECT * FROM  '.  COMMENTS_TABLE .' WHERE text '.$db->sql_like_expression(str_replace('*', $db->any_char, $term)).' COLLATE utf8_general_ci';
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
Vova_OB
phpBB 2.0.2
Сообщения: 310
Стаж: 16 лет 4 месяца
Откуда: Kiev Ukraine
Благодарил (а): 74 раза
Поблагодарили: 8 раз

Re: Поиск по комментариям сообщений

Сообщение Vova_OB »

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

Re: Поиск по комментариям сообщений

Сообщение Sheer »

Что именно не работает?
Sheer писал(а):где то есть еще ошибки.
Включи debug
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
Vova_OB
phpBB 2.0.2
Сообщения: 310
Стаж: 16 лет 4 месяца
Откуда: Kiev Ukraine
Благодарил (а): 74 раза
Поблагодарили: 8 раз

Re: Поиск по комментариям сообщений

Сообщение Vova_OB »

дебаг включен все время. ошибок на экран не выводит. когда ввожу слово тест в окно поиска должно выдать 4 результата а на данный момент не выводи по нажатию кнопки сабмит. чтото у меня там не правильно
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 8 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Поиск по комментариям сообщений

Сообщение Sheer »

Vova_OB писал(а):чтото у меня там не правильно
Это

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

<input type="text" name="{TERM}" />
Поэтому значение переменной $term принимает значение "пусто"
Должно быть так

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

<input type="text" name="term">
И еще, чтобы не было проблем с кириллицей, замени

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

$term =  request_var('term', '');
на

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

$term =  request_var('term', '', true);
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
Vova_OB
phpBB 2.0.2
Сообщения: 310
Стаж: 16 лет 4 месяца
Откуда: Kiev Ukraine
Благодарил (а): 74 раза
Поблагодарили: 8 раз

Re: Поиск по комментариям сообщений

Сообщение Vova_OB »

Зманенил все как вы сказали и подправил html. еще не работает. кеш регулярно обновляю
php

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

<?php

define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup(array('posting', 'search'));

//$bb_code	= request_var('bbc', '');
$submit		= request_var('submit', false);
$start 		= request_var('s', 0);
$term =  request_var('term', '', true);

if ($submit)

//$sql = "SELECT * FROM phpbb3_comments WHERE text  LIKE '%".$term ."%' COLLATE utf8_general_ci";
{
	$sql = 'SELECT * FROM  '.  COMMENTS_TABLE .' WHERE text '.$db->sql_like_expression(str_replace('*', $db->any_char, $term)).' COLLATE utf8_general_ci';
	$result = $db->sql_query($sql);
	
	while ($row = $db->sql_fetchrow($result))
	{
		
		$template->assign_block_vars('row', array(
		   
		    'COMMENT_ID'	=> $row['id'],
            'POST_ID'	=> $row['post_id'],
		    'COMMENT'	=> $row['text'],
		    
		));
	}

}

$template->assign_vars(array(
	'TERM'	=> $term ,
	'S_ACTION'	=> append_sid("{$phpbb_root_path}searchin.$phpEx"),

));

// Output the page
page_header('');

$template->set_filenames(array(
	'body' => 'searchin.html')
);

page_footer();

?>
html

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

<!-- INCLUDE overall_header.html -->
<h3>Search in comments</h3><br />
<form action="{S_ACTION}" method="post">  
   <input type="text" name="term"   />
   <input type="submit" name="submit"  value="{L_SUBMIT}"  class="btnmain"/>  
</form> 
<table class="tablebg" width="50%" cellspacing="1" cellpadding="4" border="0">
<tr> 
	<th >{L_COMMENT_ID}</th><th >{L_POST_ID}</th><th >{L_COMMENT}</th>
</tr>
<!-- BEGIN row -->
	<tr><td class="row1">{row.COMMENT_ID}</td><td> {row.POST_ID}</td><td>{row.COMMENT}</td></tr>
<!-- END row -->
</table>
<!-- INCLUDE overall_footer.html -->
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 8 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Поиск по комментариям сообщений

Сообщение Sheer »

Вывод промежуточных результатов весьма помогает.
Перед

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

$result = $db->sql_query($sql);
вставь

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

print "Term $term<br />$sql<br />";
и проверь, что передается в$term, и какой sql запрос получается.
ЗЫ. У меня работает :)
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
Vova_OB
phpBB 2.0.2
Сообщения: 310
Стаж: 16 лет 4 месяца
Откуда: Kiev Ukraine
Благодарил (а): 74 раза
Поблагодарили: 8 раз

Re: Поиск по комментариям сообщений

Сообщение Vova_OB »

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

Re: Поиск по комментариям сообщений

Сообщение Sheer »

Синтаксис$db->sql_like_expression(str_replace('*', $db->any_char, $term)) ни о чем не говорит?
http://www.phpbbguru.net/community/search.php -
Используйте * в качестве шаблона для частичного совпадения.
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.

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