Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.
одинаковые темы
одинаковые темы
стоит задача: при добавлении темы с неким названием проверять, нет ли темы с точь-в-точь таким же названием, и, если такая тема есть, делать message die и выдавать ссылку на эту тему.
Скажите, как на php сделать такую штуку?
Скажите, как на php сделать такую штуку?
-
- phpBB Guru
- Сообщения: 16381
- Зарегистрирован: 18 лет
- Откуда: Красноярск
- Благодарил (а): 522 раза
- Поблагодарили: 1747 раз
Если по-быстрому:
Код: Выделить всё
OPEN
posting.php
FIND
switch ( $mode )
{
case 'editpost':
case 'newtopic':
case 'reply':
$username = ( !empty($HTTP_POST_VARS['username']) ) ? $HTTP_POST_VARS['username'] : '';
$subject = ( !empty($HTTP_POST_VARS['subject']) ) ? trim($HTTP_POST_VARS['subject']) : '';
$message = ( !empty($HTTP_POST_VARS['message']) ) ? $HTTP_POST_VARS['message'] : '';
$poll_title = ( isset($HTTP_POST_VARS['poll_title']) && $is_auth['auth_pollcreate'] ) ? $HTTP_POST_VARS['poll_title'] : '';
$poll_options = ( isset($HTTP_POST_VARS['poll_option_text']) && $is_auth['auth_pollcreate'] ) ? $HTTP_POST_VARS['poll_option_text'] : '';
$poll_length = ( isset($HTTP_POST_VARS['poll_length']) && $is_auth['auth_pollcreate'] ) ? $HTTP_POST_VARS['poll_length'] : '';
$bbcode_uid = '';
AFTER, ADD
if ($mode == 'newtopic')
{
$sql = "SELECT topic_id
FROM " . TOPICS_TABLE . "
WHERE topic_title = ".$subject;
if(!$result1 = $db->sql_query($sql))
{
message_die(CRITICAL_ERROR, 'Could not select topic_id', "", __LINE__, __FILE__, $sql);
}
elseif ($test = $db->sql_fetchrow($result1))
{
$message = 'Topic already exists '. sprintf('%shere%s','<a href="' . append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . "=" . $test['topic_id']) . '">', '</a>');
message_die(GENERAL_MESSAGE, $message);
}
}
-
- Former team member
- Сообщения: 3942
- Зарегистрирован: 19 лет
- Откуда: Оренбург (Южный Урал)
- Благодарил (а): 3 раза
Вариант работающий
Код: Выделить всё
#
#--- [ OPEN ] --------------
#
includes/functions_post.php
#
#--- [ FIND ] --------------
#
$topic_vote = (!empty($poll_title) && count($poll_options) >= 2) ? 1 : 0;
#
#--- [ BEFORE, ADD ] --------------
#
$sql = 'SELECT topic_id
FROM ' . TOPICS_TABLE . "
WHERE LCASE(topic_title) = '" . strtolower($post_subject) . "'" . (($mode == 'editpost' && $post_data['first_post']) ? ' AND topic_id <> ' . $topic_id : '');
if(!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, 'Could not select topic_id', "", __LINE__, __FILE__, $sql);
}
elseif ($topic_data = $db->sql_fetchrow($result))
{
$message = sprintf($lang['Topic_already_exists'], '<a href="' . append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . '=' . $topic_data['topic_id']) . '">', '</a>');
message_die(GENERAL_MESSAGE, $message);
}
#
#--- [ OPEN ] --------------
#
language/lang_english/lang_main.php
#
#--- [ FIND ] --------------
#
//
// That's all, Folks!
// -------------------------------------------------
#
#--- [ BEFORE, ADD ] --------------
#
$lang['Topic_already_exists'] = 'Topic already exists. Click %sHere%s to view to the topic.';
Профессионал - тот же дилетант, только знающий, где ошибётся.
Генератор db_update.php для phpBB2 с некоторыми удобствами. Многие моды я беру или ищу здесь, здесь, тут
Все консультации только на форуме, приваты и стук в аську по таким вопросам игнорируются!
FAQ-phpBB3 | Ошибки новичков, или как не поссориться с модератором | Правила конференции
наш форум http://forum.aeroion.ru/cat1.html
Генератор db_update.php для phpBB2 с некоторыми удобствами. Многие моды я беру или ищу здесь, здесь, тут
Все консультации только на форуме, приваты и стук в аську по таким вопросам игнорируются!
FAQ-phpBB3 | Ошибки новичков, или как не поссориться с модератором | Правила конференции
наш форум http://forum.aeroion.ru/cat1.html
-
- Former team member
- Сообщения: 3942
- Зарегистрирован: 19 лет
- Откуда: Оренбург (Южный Урал)
- Благодарил (а): 3 раза
Есть еще один нюанс. SQL-запрос выполняется достаточно медленно, поскольку используется неиндексированное поле. Можно проиндексировать таблицу pphbb_topics по topic_title,
типа ALTER TABLE `pphbb_topics` ADD INDEX (`topic_title`);
но стоит ли это делать?
Добавлено спустя 3 часа 17 минут 28 секунд:
Кстати rxu, а вы не забыли про ночной кошмар админов и модеров форумов? Я имею в виду спам ботов.
типа ALTER TABLE `pphbb_topics` ADD INDEX (`topic_title`);
но стоит ли это делать?
Добавлено спустя 3 часа 17 минут 28 секунд:
Кстати rxu, а вы не забыли про ночной кошмар админов и модеров форумов? Я имею в виду спам ботов.
Профессионал - тот же дилетант, только знающий, где ошибётся.
Генератор db_update.php для phpBB2 с некоторыми удобствами. Многие моды я беру или ищу здесь, здесь, тут
Все консультации только на форуме, приваты и стук в аську по таким вопросам игнорируются!
FAQ-phpBB3 | Ошибки новичков, или как не поссориться с модератором | Правила конференции
наш форум http://forum.aeroion.ru/cat1.html
Генератор db_update.php для phpBB2 с некоторыми удобствами. Многие моды я беру или ищу здесь, здесь, тут
Все консультации только на форуме, приваты и стук в аську по таким вопросам игнорируются!
FAQ-phpBB3 | Ошибки новичков, или как не поссориться с модератором | Правила конференции
наш форум http://forum.aeroion.ru/cat1.html
у меня специфическая задача: есть каталог устройств, и нужно, чтобы в отдельном форуме можно было создать на каждое устройство ровно по одной теме собственно, задача состояла из двух частей: 1. дать возможность пользователям создавать темы, названия которых совпадают с названиями устройств;rxu писал(а):Ivantor, а так ли часто встречаются абсолютно одинаковые названия тем, чтобы делать по этому поводу мод?
2. так как сайт весьма посещаемый, а устройств весьма много -избежать повторных созданий тем.
-
- Former team member
- Сообщения: 3942
- Зарегистрирован: 19 лет
- Откуда: Оренбург (Южный Урал)
- Благодарил (а): 3 раза
А к этой фиче еще и мод Double Post Control привинтить, вообще хорошо будет.
Здесь бурное обсуждение мода.
Здесь бурное обсуждение мода.
Профессионал - тот же дилетант, только знающий, где ошибётся.
Генератор db_update.php для phpBB2 с некоторыми удобствами. Многие моды я беру или ищу здесь, здесь, тут
Все консультации только на форуме, приваты и стук в аську по таким вопросам игнорируются!
FAQ-phpBB3 | Ошибки новичков, или как не поссориться с модератором | Правила конференции
наш форум http://forum.aeroion.ru/cat1.html
Генератор db_update.php для phpBB2 с некоторыми удобствами. Многие моды я беру или ищу здесь, здесь, тут
Все консультации только на форуме, приваты и стук в аську по таким вопросам игнорируются!
FAQ-phpBB3 | Ошибки новичков, или как не поссориться с модератором | Правила конференции
наш форум http://forum.aeroion.ru/cat1.html
-
- phpBB 1.2.0
- Сообщения: 10
- Зарегистрирован: 16 лет 11 месяцев
-
- phpBB 1.4.3
- Сообщения: 89
- Зарегистрирован: 17 лет 1 месяц
- Откуда: Беларусь, Минск
-
- phpBB 1.2.0
- Сообщения: 10
- Зарегистрирован: 16 лет 11 месяцев
-
- phpBB 1.4.3
- Сообщения: 89
- Зарегистрирован: 17 лет 1 месяц
- Откуда: Беларусь, Минск
-
- phpBB 1.2.0
- Сообщения: 10
- Зарегистрирован: 16 лет 11 месяцев
-
- phpBB 1.2.0
- Сообщения: 10
- Зарегистрирован: 16 лет 11 месяцев