Перейти к контенту

Цитата несуществующего поста...


Рекомендуемые сообщения

_http://forum.woweb.ru/topic24096s30.html

2 и 3 сообщение сверху.

 

Во втором отцитировано третье, я на 300% уверен, что это не подстава, можно мне научное объяснение? А то сам думать не могу.

 

Телепатия не катит :D

Ссылка на комментарий
Поделиться на других сайтах

				if ( $last_post['author_id'] == $this->ipsclass->member['id'] )
			{
				$new_post  = $last_post['post'].'<br /><br />'.$this->post['post'];

				//-----------------------------------------
				// Update post row
				//-----------------------------------------

				$this->ipsclass->DB->force_data_type = array( 'pid'  => 'int',
															  'post' => 'string' );

				$this->ipsclass->DB->do_update( 'posts', array( 'post' => $new_post, 'post_date' => time() ), 'pid='.$last_post['pid'] );

				$this->post['pid']	  = $last_post['pid'];
				$this->post['post_key'] = $last_post['post_key'];
				$post_saved			 = 1;
				$this->is_merging_posts = 1;
			}
		}
	}

	//-----------------------------------------
	// No?
	//-----------------------------------------

	if ( ! $this->is_merging_posts )
	{
		//-----------------------------------------
		// Add post to DB
		//-----------------------------------------

		$this->post['post_key']	= $this->post_key;
		$this->post['post_parent'] = intval($this->ipsclass->input['parent_id']);

		//-----------------------------------------
		// Typecast
		//-----------------------------------------

		$this->ipsclass->DB->force_data_type = array( 'pid'  => 'int',
													  'post' => 'string' );

		$this->ipsclass->DB->do_insert( 'posts', $this->post );

		$this->post['pid'] = $this->ipsclass->DB->get_insert_id();
	}

 

успеть отработать сприпт во втором условии до того как у другого выполнилось первое теоретически, наверное, возможно =)

Ссылка на комментарий
Поделиться на других сайтах

Эмм, не, на вовэбе лучше предложили, так загнули :D)

 

Ладно, вот тебе теоретически возможно, отлично, а практически пофиксить? )

Ссылка на комментарий
Поделиться на других сайтах

А как вы объясните, что время в цитате на час вперед отличается от самого поста?! Это все там же. :D Дата там одна и та же.

 

А насчет ответа. Всему может оказаться простое объяснение. Если человек написал пост, где эта коронная фраза была частью поста а потом стер его (предположим это разрешено на форуме), то его уже успели процитировать. Причем пока человек пил кофе и отвечал на цитату, пост был удален. А когда ответ запостили после этого уже и новая версия поста появилась. Человек-то рашил "убрать все лишнее" и оставить только свою коронную фразу ;)

 

Но вот время... столку сбивает.

 

Хотя и тут может быть редактирование БД, или просто тот, кто цитировал по памяти востановил время и ошибся :)

Ссылка на комментарий
Поделиться на других сайтах

и тут выползает следующий баг с DST'ом при цитировании :D Изменено пользователем .silent
Ссылка на комментарий
Поделиться на других сайтах

Я знаю как случилось так !!!

 

Человек написал пост - другой пришёл его цитировать, а в это время - часы на сервер назад перевели :D))

Ссылка на комментарий
Поделиться на других сайтах

не, скорее всего у одного юзера стоит "Автокоррекция перехода на летнее время", а у другого - нет.

надо тестить, может еще один баг :D

 

тока я не буду.

Ссылка на комментарий
Поделиться на других сайтах

Так, то, что время указано над цитатой - оно записано в пост как оно есть и не меняется, так, что с ДТС у них почти порядок..

 

Я говорю - мой вариант самый простой для понимания :D

Ссылка на комментарий
Поделиться на других сайтах

там просто запрос в склейке не совсем правилен.

Лишнее включено в WHERE из-за чего сообщение было приклеено к последнему посту, который удовлетворил требованию в WHERE, но этот пост не был последним постом на самом деле.

У меня такое бывало не раз, когда забывался.

 

2Destruction

 

Даже если бы перевели часы, то это не было бы достаточной причиной для того, чтобы посты поменялись местами.

Ссылка на комментарий
Поделиться на других сайтах

Склейка сообщений не так срботала. А все, возможно из-за сортировки по дате сообщения, а не идентификатора (при вычислении чье сообщение было написано последним).

 

.silent там 1.2 поэтому код не такой, а мод склейки для этой версии именно так и высчитывает последний пост (сортируя по дате в обратном порядке)

Ссылка на комментарий
Поделиться на других сайтах

2Hostem

 

при чём тут сортировка? При склейке она вообще не учитывается. Тем более сортировка в IPB меняется только для топиков, но никак не для постов.

Я же говорю, что там ошибочный запрос в склейке на форуме с приведённым скриншотом.

Ссылка на комментарий
Поделиться на других сайтах

Сортировка не при отображении поста, а при вычислении последнего поста когда происходит склейка.

 

Т.е. делают запрос

 

SELECT * FROM ibf_posts WHERE topic_id=... ORDER by post_date DESC LIMIT 1

 

Вот если идут два последних сообщения подряд с одинаковыми post_date, то склейка произойдет к предпоследнему сообщению.

 

Пофиксить - исправить post_date на pid

Ссылка на комментарий
Поделиться на других сайтах

>> Вот если идут два последних сообщения подряд с одинаковыми post_date, то склейка произойдет к предпоследнему сообщению.

такое невозможно.

Ссылка на комментарий
Поделиться на других сайтах

Возможно и по закону подлости именно это и происходит с последними сообщениями отправленными в одну секунду.
Ссылка на комментарий
Поделиться на других сайтах

1) Вставляется сообщение

cactusomania, почему? ;) спят все? )))

QUOTE (MAPO4HUK @ Суббота, 19 Августа 2006, 1:06)

тогда перестань ментов избегать.

 

ыыыы )) чур меня... :D и так блин сердце в пятки уходит когда в метро спускаюсь

2) В ту же секунду

Нам положен почетный знак «Флудеры недели» :)

3) Неважно в какую секунду, но до того как отправил пост cactusomania... Bl@ze цитирует предыдущее сообщение, мод склейки сообщений высчитывает последний пост

"SELECT * FROM ibf_posts WHERE topic_id=... ORDER by post_date DESC LIMIT 1"

 

post_date в двух последних сообщениях одинаковый, поэтому "последним постом" может оказать как последний так и предпоследний. Так как не указано, что надо сначала сортировать по дате, а потом по айди, либо просто по айди. И вот в этой строке которую МуСКЛ вернул author_id будет равен Bl@z'овому. И склеится к предпоследнему сообщению

Ссылка на комментарий
Поделиться на других сайтах

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.