Комментарии для постов php mysql

_ne_scaju_

У меня возник вопрос о системе комментариев, знаю вроде реализация не тяжелая, но объяснить принцип работы, не помешало бы, и примерно написать какие поля для комментариев обычно делают, спасибо. Могу и я кратко описать как вижу это я:
есть база в ней например три таблицы:
users(id, login, pass)
posts(id, uid, title, desc)
comments(id, uid, title, desc)
Для того чтобы добавить комментарий, нужно зайти на определенный пост:

PHP:
  1. запрос на получение поста

дальше под постов делаем форму для комментариев

HTML:
  1. логин
  2. емаил
  3. сообщение
  4. код с картинки (при необходимости)
  5. <a href=«/post/<?=$pid[‘id’]; ?>>комментировать</a>
  6.  

ну и дальше ясным делом, если пользователь заполнил поля все правильно выполняем insert в базу.
а так же не забываем под формой ввода вывести уже существующие записи, на которые можно ответить. Это я кратко описал конечно принцип как я думаю.
А хотелось бы чуток больше узнать.

 

lastdays

comments ещё id_posts должен содержать (связь), время добавления, лайки/дизлайки мб

У меня 3 таблицы.
users — зарегистрированные пользователи на сайте
history — статьи
comments — таблица самих комментариев

Запрос выглядит примерно так

Код (Text):
  1.      
  2.     SELECT
  3.       `c`.*,
  4.       `u`.`firstname`, `u`.`lastname`, `u`.`avatar`
  5.      FROM
  6.       `comments` `c`
  7.       INNER JOIN `users` `u`
  8.       On ( `c`.`autor_id` = `u`.`id` )
  9.      WHERE
  10.       `c`.`id_history`=?i  ORDER BY `c`.`id_comments` DESC

Но у меня задача проще и комментариев миллиард не будет.
А так постраничную навигацию желательно делать или подгружать по запросу более старые комменты.

 

miketomlin

Ну, все правильно с учетом замечания из пред. поста, если нет вложенных комментов.

В посте можно закешировать кол-во комментов, о чем я вроде недавно тебе писал.
— Добавлено —

Если пользователь авторизован, ему достаточно сам коммент написать. Не помню, чтобы встречал форму комментирования с полями login/pass. Обычно пишут «чтобы оставить коммент, авторизуйтесь (ссылка)». А для гостей помимо имени используют какие-то значимые идентификаторы вроде мыла/номера телефона.
— Добавлено —
P.S. Тайтл у комментов редко используется.
— Добавлено —

Данные для сохранения отправляются методом POST. По GET ты сам пост с комментами выводишь (комменты можно отдельным AJAX-запросом вычитывать).

 

_ne_scaju_

понял, я хочу делать с вложенными комментами.
— Добавлено —

согласен я написал на скорую руку не подумав о пост данных) Я хочу уточнить по поводу ответов на комментарий, это отдельная таблица или как?

 

miketomlin

Или как. Коммент, на который отвечаешь, – коммент-родитель для этого ответа. Нужна соотв. связь.

 

mkramer

А ты хочешь деревьями показывать такие коменты?

 

_ne_scaju_

ну да именно дерево скорее всего только типа так:

Код (Text):
  1. пост 1:
  2. юсер1 комент
  3.   юсер2 комент
  4.     юсер3 комент
  5.       юсер4 комент

т.е. это доп. таблица нужна, или можно одной обойтись?)

 

_ne_scaju_

ясно сам напишу спасибо, код посмотрю в инете, отпишусь если что будет не получатся.

 

mkramer

_ne_scaju_

как нибудь дойду и до этих рекурсий.

 

miketomlin

Если вложенность более 1 уровня, рекурсивный алгоритм все равно понадобится (хотя, как известно, рекурсия может разворачиваться в цикл с переключением уровней). Вообще на мой взгляд это отстой. У нас ни на одном сайте нет вложенных комментов.

 

_ne_scaju_

я передумал вложенные комментарии, но хотел бы так:
пользователь написал, и кто-то ему мог ответить на его коммент. как на форуме, пока не пойму сколько таблиц нужно)

 

miketomlin

Я же написал «Или как» ;) После еще и mkramer повторил.

Ссылку на родителя можно использовать и без вложенных комментов, чтобы не заниматься глубоким анализом содержимого комментов (на предмет выуживания адресата или адресатов).
— Добавлено —
Единственный «минус» по сравнению с форумным «глубоким анализом» – в одном комменте может быть ответ только на один коммент, что в общем-то вполне норм., если не заниматься принудительным объединением смежных комментов, являющихся ответами на разные комменты.

 

_ne_scaju_

т.е. доп. таблица?

 

miketomlin

Нет.
— Добавлено —
Тебе уже десять раз написали о доп. поле для хранения ссылки на родителя. Причем тут доп. таблица? Что ты собрался в ней хранить?

 

_ne_scaju_

понял, parent_id, буду пробовать.

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *