одинаковые темы
- 
				Ivantor
одинаковые темы
стоит задача: при добавлении темы с неким названием проверять, нет ли темы с точь-в-точь таким же названием, и, если такая тема есть, делать message die  и выдавать ссылку на эту тему.
Скажите, как на php сделать такую штуку?
			
			
									
						Скажите, как на php сделать такую штуку?
- 
				rxu  
- phpBB Guru 
- Сообщения: 17059
- Зарегистрирован: 19 лет 5 месяцев
- Откуда: Красноярск
- Благодарил (а): 565 раз
- Поблагодарили: 1742 раза
Если по-быстрому:
			
			
									
						Код: Выделить всё
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
- Зарегистрирован: 20 лет 5 месяцев
- Откуда: Оренбург (Южный Урал)
- Благодарил (а): 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
- Зарегистрирован: 20 лет 5 месяцев
- Откуда: Оренбург (Южный Урал)
- Благодарил (а): 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
- 
				Ivantor
у меня специфическая задача: есть каталог устройств, и нужно, чтобы в отдельном форуме можно было создать на каждое устройство ровно по одной темеrxu писал(а):Ivantor, а так ли часто встречаются абсолютно одинаковые названия тем, чтобы делать по этому поводу мод?
 собственно, задача состояла из двух частей: 1. дать возможность пользователям создавать темы, названия которых совпадают с названиями устройств;
 собственно, задача состояла из двух частей: 1. дать возможность пользователям создавать темы, названия которых совпадают с названиями устройств;2. так как сайт весьма посещаемый, а устройств весьма много -избежать повторных созданий тем.
- 
				Поручик  
- Former team member
- Сообщения: 3942
- Зарегистрирован: 20 лет 5 месяцев
- Откуда: Оренбург (Южный Урал)
- Благодарил (а): 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
- 
				Fedor25
- phpBB 1.2.0
- Сообщения: 10
- Зарегистрирован: 18 лет 4 месяца
- 
				chipp  
- phpBB 1.4.3
- Сообщения: 89
- Зарегистрирован: 18 лет 7 месяцев
- Откуда: Беларусь, Минск
- 
				Fedor25
- phpBB 1.2.0
- Сообщения: 10
- Зарегистрирован: 18 лет 4 месяца
- 
				chipp  
- phpBB 1.4.3
- Сообщения: 89
- Зарегистрирован: 18 лет 7 месяцев
- Откуда: Беларусь, Минск
- 
				Fedor25
- phpBB 1.2.0
- Сообщения: 10
- Зарегистрирован: 18 лет 4 месяца
- 
				Fedor25
- phpBB 1.2.0
- Сообщения: 10
- Зарегистрирован: 18 лет 4 месяца


