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

Discussion in 'PHP' started by Дикс, 27 Apr 2006.

  1. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    Тема при создании получает ИД.
    И в ней должен быть указан ИД первого поста, с которого она начинается.
    Пост при создании получает Ид.
    И он уже должен знать ИД созданной темы, в которую он включён.

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

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

    ferryman Elder - Старейшина

    Joined:
    13 Feb 2006
    Messages:
    88
    Likes Received:
    8
    Reputations:
    5
    Если с мускулем - то mysql_insert_id(); (возвращает ID, сгенерированный для столбца AUTO_INCREMENT предыдущим запросом INSERT)
     
  3. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    ой блин, я тока щас допёр что можно создать тему с пустым ИД первого поста, а при создании поста внести в тему его ИД..
     
  4. ferryman

    ferryman Elder - Старейшина

    Joined:
    13 Feb 2006
    Messages:
    88
    Likes Received:
    8
    Reputations:
    5
    ты хоть понял чего сказал?

    внимательно читаем mysql_isert_id()
     
  5. Trinux

    Trinux Members of Antichat

    Joined:
    26 Nov 2004
    Messages:
    1,403
    Likes Received:
    296
    Reputations:
    364
    2 таблицы.
    первая топов, вторая постов.
    В таблице топов только инфа о топе и ничего больше.
    В таблице постов все о постах + id топа, в котором находится пост.
    При написании нового поста добавляется запись в таблицу топов, выдирается id топа полученного (как уже говорили $id=mysql_insert_id(); сразу после запроса на INSERT в таблицу топов) и добавляется запись в таблицу постов с id топа. Вот и все.
     
    _________________________
  6. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    понял, как ни странно. попробуй прочитать внимательнее.

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

    Trinux Members of Antichat

    Joined:
    26 Nov 2004
    Messages:
    1,403
    Likes Received:
    296
    Reputations:
    364
    очень маловероятно. Хотя мне трудно судить. В теории транзакций возможна такая ситуация, в которой вернется неверный id в твоем случае. Но если бы это было частым - данный функции бы не существовало.

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

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    спасибо большое, так и сделал, всё работает.
     
  9. ferryman

    ferryman Elder - Старейшина

    Joined:
    13 Feb 2006
    Messages:
    88
    Likes Received:
    8
    Reputations:
    5
    выгон..

    0.0000000000000001%
     
    #9 ferryman, 28 Apr 2006
    Last edited: 28 Apr 2006
  10. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    в смысле?
    как ты вставишь туда ИД ещё не созданного поста?
     
  11. ferryman

    ferryman Elder - Старейшина

    Joined:
    13 Feb 2006
    Messages:
    88
    Likes Received:
    8
    Reputations:
    5
    Блин.. Приходится цитировать.

    Ты умеешь внимательно читать?
     
  12. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    1 добавляется запись в таблицу топов
    2 выдирается ИД созданного топа (с помощью $id=mysql_insert_id())
    3 и добавляется запись в таблицу постов с id топа.

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

    ferryman Elder - Старейшина

    Joined:
    13 Feb 2006
    Messages:
    88
    Likes Received:
    8
    Reputations:
    5
    не трудно догаться - Update...
     
  14. Trinux

    Trinux Members of Antichat

    Joined:
    26 Nov 2004
    Messages:
    1,403
    Likes Received:
    296
    Reputations:
    364
    Загнул. Вероятность больше.
     
    _________________________