Код: Выделить всё
#
#-----[ SQL ]------------------------------------------
#
ALTER TABLE `phpbb_search_results` ADD `search_query` VARCHAR( 100 ) NOT NULL ;
ALTER TABLE `phpbb_search_results` ADD `search_time` INT( 11 ) NOT NULL ;
#
#-----[ OPEN ]------------------------------------------
#
search.php
#
#-----[ FIND ]------------------------------------------
#
$search_id = mt_rand();
#
#-----[ AFTER, ADD ]------------------------------------------
#
$search_time = time();
$search_query = trim(str_replace("\'", "''", stripslashes($search_keywords)));
#
#-----[ FIND ]------------------------------------------
#
SET search_id = $search_id, search_array = '" . str_replace("\'", "''", $result_array) . "'
#
#-----[ IN-LINE FIND ]------------------------------------------
#
$result_array) . "'
#
#-----[ IN-LINE AFTER, ADD ]------------------------------------------
#
, search_query = '$search_query', search_time = '$search_time'
#
#-----[ FIND ]------------------------------------------
#
$sql = "INSERT INTO " . SEARCH_TABLE . " (search_id, session_id, search_array)
#
#-----[ IN-LINE FIND ]------------------------------------------
#
, search_array
#
#-----[ IN-LINE AFTER, ADD ]------------------------------------------
#
, search_query, search_time
#
#-----[ FIND ]------------------------------------------
#
VALUES($search_id, '" . $userdata['session_id'] . "', '" . str_replace("\'", "''", $result_array) . "')";
#
#-----[ IN-LINE FIND ]------------------------------------------
#
$result_array) . "'
#
#-----[ IN-LINE AFTER, ADD ]------------------------------------------
#
, '$search_query', '$search_time'
#
#-----[ FIND ]------------------------------------------
#
//
// Output the basic page
//
#
#-----[ BEFORE, ADD ]------------------------------------------
#
$sql = "SELECT search_query FROM " . SEARCH_TABLE . " WHERE search_query != '' ORDER BY search_time DESC LIMIT 5";
$result = $db->sql_query($sql) or message_die(GENERAL_ERROR, 'Could not obtain last queries info', '', __LINE__, __FILE__, $sql);
if ($db->sql_numrows($result))
{
$last_queries_arr = array();
while( $row = $db->sql_fetchrow($result) )
{
$last_queries_arr[] = htmlspecialchars($row['search_query']);
}
$last_queries_info = implode(', ', $last_queries_arr);
}
else
{
$last_queries_info = $lang['No_last_search_queries'];
}
#
#-----[ FIND ]------------------------------------------
#
'S_SORT_OPTIONS' => $s_sort_by,
#
#-----[ AFTER, ADD ]------------------------------------------
#
'L_LAST_SEARCH_QUERIES_INFO' => $lang['Last_search_queries_info'],
'LAST_SEARCH_QUERIES_INFO' => $last_queries_info,
#
#-----[ OPEN ]------------------------------------------
#
lang_english/lang_main.php
#
#-----[ FIND ]------------------------------------------
#
?>
#
#-----[ BEFORE, ADD ]------------------------------------------
#
$lang['Last_search_queries_info'] = 'Last queries';
$lang['No_last_search_queries'] = 'No queries';
#
#-----[ OPEN ]------------------------------------------
#
templates/subSilver/search_body.tpl
#
#-----[ FIND ]------------------------------------------
#
<td class="row2" colspan="2" valign="top"><span class="genmed"><input type="text" style="width: 300px" class="post" name="search_keywords" size="30" />
#
#-----[ IN-LINE FIND ]------------------------------------------
#
<input type="text" style="width: 300px" class="post" name="search_keywords" size="30" />
#
#-----[ IN-LINE AFTER, ADD ]------------------------------------------
#
<br /><span class="gensmall">{L_LAST_SEARCH_QUERIES_INFO}: {LAST_SEARCH_QUERIES_INFO}</span>
Особенность: запоминает только те запросы, которые при поиске дали результат. Возможно алгоритм позже будет изменен, но мне и так нравится пока.

Добавлено спустя 5 минут 15 секунд:
В общем, оцениваем. Постарался по максимуму использовать существующие таблицы и прочие возможности форума.
Добавлено спустя 14 минут 58 секунд:
Еще особенность: запоминает только последний запрос пользователя. Собственно, если нужна расширенная статистика, то нужно будет все хранить в отдельной таблице, а для данного случая imho и эот вариант подойдет. Предлагаю этот момент тоже обсудить.