PDA

Просмотр полной версии : Создание темы и поста в самописном форуме


Дикс
27.04.2006, 14:22
Тема при создании получает ИД.
И в ней должен быть указан ИД первого поста, с которого она начинается.
Пост при создании получает Ид.
И он уже должен знать ИД созданной темы, в которую он включён.

Как разрешить этот каламбур? Что появилось раньше - пост или тема?

ЗЫ я бы посмотрел сорцы других форумов, но я нихрена понять в них не могу :(

ferryman
27.04.2006, 15:11
Если с мускулем - то mysql_insert_id(); (возвращает ID, сгенерированный для столбца AUTO_INCREMENT предыдущим запросом INSERT)

Дикс
27.04.2006, 15:56
ой блин, я тока щас допёр что можно создать тему с пустым ИД первого поста, а при создании поста внести в тему его ИД..

ferryman
27.04.2006, 17:13
ой блин, я тока щас допёр что можно создать тему с пустым ИД первого поста, а при создании поста внести в тему его ИД..

ты хоть понял чего сказал?

возвращает ID, сгенерированный для столбца AUTO_INCREMENT предыдущим запросом INSERT

внимательно читаем mysql_isert_id() (http://ua2.php.net/manual/ru/function.mysql-insert-id.php)

Trinux
27.04.2006, 17:42
2 таблицы.
первая топов, вторая постов.
В таблице топов только инфа о топе и ничего больше.
В таблице постов все о постах + id топа, в котором находится пост.
При написании нового поста добавляется запись в таблицу топов, выдирается id топа полученного (как уже говорили $id=mysql_insert_id(); сразу после запроса на INSERT в таблицу топов) и добавляется запись в таблицу постов с id топа. Вот и все.

Дикс
27.04.2006, 18:01
ты хоть понял чего сказал?
понял, как ни странно. попробуй прочитать внимательнее.

а про mysql_insert_id(); хочу спросить: не может ли так получится что после создания топа, кто-нить запостит пост в другом месте и эта функция вернёт другой ид?

Trinux
27.04.2006, 18:21
а про mysql_insert_id(); хочу спросить: не может ли так получится что после создания топа, кто-нить запостит пост в другом месте и эта функция вернёт другой ид?
очень маловероятно. Хотя мне трудно судить. В теории транзакций возможна такая ситуация, в которой вернется неверный id в твоем случае. Но если бы это было частым - данный функции бы не существовало.

P.S. Функция вернет id только в том случае если есть AUTO_INCREMENT поле в таблице. Вернет, соответственно, его id. mysql_insert_id() это аналог mysql функции LAST_INSERT_ID(), а не разработка php.

Дикс
28.04.2006, 06:58
спасибо большое, так и сделал, всё работает.

ferryman
28.04.2006, 10:19
создать тему с пустым ИД

выгон..


а про mysql_insert_id(); хочу спросить: не может ли так получится что после создания топа, кто-нить запостит пост в другом месте и эта функция вернёт другой ид?

0.0000000000000001%

Дикс
28.04.2006, 10:45
выгон..
в смысле?
как ты вставишь туда ИД ещё не созданного поста?

ferryman
28.04.2006, 11:01
В таблице постов все о постах + id топа, в котором находится пост.
При написании нового поста добавляется запись в таблицу топов, выдирается id топа полученного (как уже говорили $id=mysql_insert_id(); сразу после запроса на INSERT в таблицу топов) и добавляется запись в таблицу постов с id топа. Вот и все.


Блин.. Приходится цитировать.

Ты умеешь внимательно читать?

Дикс
28.04.2006, 15:37
1 добавляется запись в таблицу топов
2 выдирается ИД созданного топа (с помощью $id=mysql_insert_id())
3 и добавляется запись в таблицу постов с id топа.

А теперь скажи мне, как ид созданного поста, попадёт в столбец 'first_post' топа?
Т.е. как топ узнает, с какого поста он начинается?

ferryman
28.04.2006, 16:26
не трудно догаться - Update...

Trinux
28.04.2006, 16:53
0.0000000000000001%
Загнул. Вероятность больше.