Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.10.2009, 23:29   #1
Amen
Заблокирован
Форумчанин
 
Регистрация: 22.01.2008
Сообщений: 121
По умолчанию Добавление комментариев

Опять я со своей новостной лентой
Нужна функция добавления комментариев.
Я подумал так -
1. Добавлю в базу ещё одну таблицу, с полями автор и коммент
2. Под каждой статьёй будет ссылка на комменты
3. По ссылке переходим а страницу, в котой выходят все комменты к данной новости и форма добавления, комменты из новой таблицы

Было бы легче, если можно было запихнуть новую таблицу в одно поле. Так можно?
Если нет - как связать новую таблицу со старой, чтоб они были айди в айди?
Рассудите, в правильном ли русле вообще течет моя мысль?
Потом, если позволите, будут вопросы поконкретнее))
Amen вне форума Ответить с цитированием
Старый 20.10.2009, 02:38   #2
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Что-то ничего не понял. А как Вы собираетесь определять, к какой новости относится коммент? По крайней мере нужно ещё 2 поля в таблице комментариев - ID комментария и ID таблицы, к которой он относится, кстати его можно сделать внешним ключом
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 20.10.2009, 12:04   #3
Gorychev
Участник клуба
 
Аватар для Gorychev
 
Регистрация: 08.03.2008
Сообщений: 1,537
По умолчанию

Цитата:
1. Добавлю в базу ещё одну таблицу, с полями автор и коммент
2. Под каждой статьёй будет ссылка на комменты
3. По ссылке переходим а страницу, в котой выходят все комменты к данной новости и форма добавления, комменты из новой таблицы
Напишу, как я вижу этот механизм, а если что не так вы меня поправите. Все ниже сказанное не претендует на звание некой непоколебимой истины, короче все ИМХО.

Все новости храним в таблице с двумя полями, id_page и text. А коментарии храним в отдельной таблице для каждой статьи, которая будет иметь имя, например $table_name = 't_new_coments_'. $id_page; Таблица создается совместно с новостью, так же и удаляется вместе с ней.
Для удобства следует написать страничку админки для добавления новой новости(сори за тавтологию) и удаления ненужных, чтобы автоматом выполнять создание таблицы с коментами или удалению ненужных новостей, а заодно и таблиц коментов.

Для выборки данных из нужной таблицы достаточно передать скрипту, который будет отвечать за вывод/добавление коментов, $id новости.
Короче, считали/вывели новость по айди, внизу новости формируем ссылку типа
Код:
<a href="add_comments.php?id=<?php echo $id_page; ?>">Добавить комментарий</a>
В add_comet.php, id считывается, допустим так:
Код:
  $id = (int)$_GET['id'];  
  $table_name = 't_new_coments_'. $id; // имя таблицы в которой хранятся коменты;
  // зная имя таблицы с коментами, считываем их, выводим на экран, добавляем новые.
Цитата:
Добавлю в базу ещё одну таблицу, с полями автор и коммент
Еще нужно добавить дату/время написания комментария, т.е + еще одно поле с типом DATETIME.

Проще конечно держать все коменты для всех новостей в одной таблице, как предлагает Greblin, но так теряется производительность, т.к. придется рыться в большой таблице и выбирать WHERE id = $id. Когда, если, для каждой таблице создана отдельная таблица для хранения коментов, просто выбираем все записи нужных полей и все.
Gorychev вне форума Ответить с цитированием
Старый 20.10.2009, 12:52   #4
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Таблица с комментариями должна иметь такие поля:
Id_комментария
Id_статьи
Text_комментария
Time_комментария
Это минимальный набор полей. Выборка комментариев будет проходить по Id_статьи, сортировка по Time_комментария.
Arigato вне форума Ответить с цитированием
Старый 20.10.2009, 14:59   #5
Amen
Заблокирован
Форумчанин
 
Регистрация: 22.01.2008
Сообщений: 121
По умолчанию

Всем спасибо, сделал, работает.
Gorychev, одна таблица - на каждую статью? Спасибо за мысль. Но пока мне хватает одной таблицы, о производительности думать буду потом
Таблица получилась такая:
PHP код:
id INT NOT NULL AUTO_INCREMENT,
id_news INT NOT NULL,
date_com datetime NOT NULL,
name_com text NOT NULL,
comm text NOT NULL,
PRIMARY KEY (id
А как лучше делать функцию редактирования и удаления комментов?
Сделать ссылку в админке на каждую статью "комментарии (число комментов)"? Или лучше сделать для них отдельную админку, вход в котрую будет происходить их основной?

Ещё вопрос - к примеру статей появится много и следить за комментами к каждой будет проблематично. Каким способом делается функция оповещения о новых комментах, как в форумах о новых сообщениях?

Последний раз редактировалось Amen; 20.10.2009 в 15:37.
Amen вне форума Ответить с цитированием
Старый 20.10.2009, 17:42   #6
Gorychev
Участник клуба
 
Аватар для Gorychev
 
Регистрация: 08.03.2008
Сообщений: 1,537
По умолчанию

Код:
name_com text NOT NULL,
Зачем text? Хватит и char(30).
Gorychev вне форума Ответить с цитированием
Старый 20.10.2009, 18:44   #7
Amen
Заблокирован
Форумчанин
 
Регистрация: 22.01.2008
Сообщений: 121
По умолчанию

Gorychev, ага, спасибо.
Ещё одно минизатруднение - если заголовок новости состоит из нескольких слов, то в поле инпут редактирования заголовка отображается только первое слово. Не понимаю, почему...

P.S. Arigato, переименуйте пожалуйста тему в просто "Новостную ленту", если это возможно.
Amen вне форума Ответить с цитированием
Старый 20.10.2009, 18:54   #8
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Цитата:
Сообщение от Amen
Ещё одно минизатруднение - если заголовок новости состоит из нескольких слов, то в поле инпут редактирования заголовка отображается только первое слово. Не понимаю, почему...
Может вы не знаете, что атрибуты тегов обязательно нужно заключать в кавычки?

Цитата:
Сообщение от Amen
Arigato, переименуйте пожалуйста тему в просто "Новостную ленту", если это возможно.
Один вопрос - одна тема. Если есть другие вопросы, создавайте новую тему.
Arigato вне форума Ответить с цитированием
Старый 20.10.2009, 19:23   #9
Amen
Заблокирован
Форумчанин
 
Регистрация: 22.01.2008
Сообщений: 121
По умолчанию

Всё, понял.
Всё же как на счёт вопросов из пятого поста? Или лучше перенести их в тему для новичков?
Amen вне форума Ответить с цитированием
Старый 20.10.2009, 19:34   #10
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Цитата:
Сообщение от Amen
одна таблица - на каждую статью?
Одна таблица на все статьи.

Цитата:
Сообщение от Amen
А как лучше делать функцию редактирования и удаления комментов?
Редактирование и удаление по Id комментария.

Цитата:
Сообщение от Amen
Сделать ссылку в админке на каждую статью "комментарии (число комментов)"? Или лучше сделать для них отдельную админку, вход в котрую будет происходить их основной?
Как вам больше нравится, так и делайте.
Можно возле каждого коммента для админа сделать пару кнопок: удалить и редактировать.

Цитата:
Сообщение от Amen
Каким способом делается функция оповещения о новых комментах, как в форумах о новых сообщениях?
Запоминаем где-нибудь, когда было последнее оповещение. При заходе в админку, если есть комменты, дата которых больше, чем дата последнего оповещения - оповещаем и устанавливаем дату оповещения на текущую.
Arigato вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление в БД vilini БД в Delphi 4 23.07.2009 13:16
Добавление в БД Claster БД в Delphi 3 26.05.2009 21:12
"Количество комментариев" в DLE ??? spamer WordPress и другие CMS 4 09.02.2009 17:37
Добавление в БД Dissonance БД в Delphi 3 05.06.2008 21:22
Добавление Holodok БД в Delphi 1 09.05.2008 18:01