| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Базы Данных > Ответ на комментарий |
| Автор: patap 4.4.2011, 11:22 | ||||||
| помогите дельным советом, как правильнее реализовать такую вот штуку: есть к примеру какой-то текст, который юзера могут комментировать нужно сделать, чтобы была возможность в комментариях отвечать пользователю на его коммент. вот пример:
как это лучше сделать? я начал так, когда отвечаем юзеру на коммент, то его ид заносится в поле to_user, но потом понял что не могу достать имя юзера, которому ответили. т.к если это "комментарий ответ", то нужно в результате вернуть два пользовательских имени. в принципе можно через временную таблицу, достать во временную таблицу имена юзеров, которым был ответ, а потом сджойнить ее с основным результатом, но не уверен оптимальности. либо добавить поле в таблицу comments to_username, и записывать в него имя пользователя, которому был ответ, но это будет дублирование данных.. в общем такая вот ситуация, может я чего-то не догоняю и тут все намного проще...
|
| Автор: patap 4.4.2011, 15:10 | ||||||||
пока что сделал так:
вот результат
единственное что беспокоит - это временная таблица, т.к. имя этой таблицы будет генерироваться динамически при каждом запросе на получение комментариев. Т.е. при каждом запросе будет создаваться уникальная временная таблица, разумеется она после завершения сеанса с БД будет удаляться, но вот к примеру если будет около сотни обращений в один момент или больше, не выйдет ли это боком? Добавлено через 7 минут и 16 секунд либо может быть возложить это на плечи PHP... т.е сделать так: сначала достать тех юзеров для которых есть сообщения "ответ"
потом достать собственно сообщения
ну и обработать это все на стороне PHP... Есть, что у кого посоветовать? |
| Автор: ksnk 4.4.2011, 15:25 |
| Комменты на комменты - получается дерево. Нужно пилить в сторону "хранение деревьев в базе данных" и применять полученные знания. Ветка дерева "нулевого" уровня - комментарий на статью. Ветка ненулевого - комментарий на комментарий. |
| Автор: patap 4.4.2011, 15:48 |
| ksnk, спасибо. я с деревьями знаком. В данном случае нет необходимости строить дерево, основная идея в том, что если юзер1 отвечает юзеру2, то это значит, что это сообщение привязано просто к юзеру2, но не к сообщению от юзера2. т.е. другими словами нужно получить запись, чтобы в ней фигурировало имя юзера которому ты хочешь что-то сказать. это наподобие того, как на этом форуме, когда пишешь и хочешь вставить чье-то имя в пост - нажимаешь на ник участника и имя вставляется в тело сообщения. можно было бы, тоже вклеить имя юзера в сообщение, но тогда нужно ограничить юзера в действиях по смене ника блин, хрень какая-то... ЗЫ а парент ид наверно добалю для сообщения, так про запас. |
| Автор: Nigel 4.4.2011, 23:37 |
| Какая задача-то? Цитирование сделать как здесь? Тогда просто обрамляешь текст в \[QUOTE\]\[/QUOTE\] и парсишь регулярками. |
| Автор: patap 5.4.2011, 09:50 |
| с утра посмотрел на это все, и решил что для моего случая, будет идиальным вариантом - просто лента комментов, без всяких вые..новвот этих вот прибауток все равно спасибо, быть может без советов полез бы в ненужные дебри... |
| Автор: Vreden 19.6.2011, 13:45 |
| ХМ... Не уверен что суть вопроса мне ясна, но я реализовал коммент на коммент следующим образом, в форме отправки комментария у меня есть скрытое поле со значением CommentAnswer и когда юзер тычет на кнопку "Цитировать", расположенную у каждого комментария, CommentAnswer присваивается ID цитируемого комментария, заносим его в базу и при выводе данного комментария по ID того коммента вытаскиваю имя юзера и все остальные потроха. Ничего зазорного в том, чтобы для этих целей хранить еще одно поле в таблице не вижу. |