dzheka3d
@dzheka3d

Как лучше делать редактирование статей?

Всем привет! Нужно сделать редактирование статей и вот вопрос... Редактирование это как правило такая же форма как и при добавлении. Имеет смысл и редактирование и добавление сделать в одном файле с одной формой, разница в которых будет только в присутствии скрытого поля (при редактировании) содержащим id новости.
Дальше отсылаем данные на тот же обработчик, который используется при добавлении и там проверяем присутствие этого скрытого поля. Если присутствует - запрос UPDATE, если отсутствует - запрос INSERT.
Либо делать для каждого действия свою форму и свой обработчик? В таком случае, при добавлении какого-то поля или его изменении нужно будет вносить изменения в 2 файла и для редактирования и для добавления.

UPD: Блин )) 3 варианта, 3 ответа, 3 решения )) И что теперь делать ))
  • Вопрос задан
  • 81 просмотр
Пригласить эксперта
Ответы на вопрос 2
PretorDH
@PretorDH
HTML5, CSS3, PHP, JS - люблю в чистом виде.
Один контроллер для обработки этого обьекта;
3 экшина:
  1. (post) создание обьекта - вызывает подготовку данных для новой записи, вызывает модель записи и перекидывающий на экшин редактирования;
  2. (post) редактирование обьекта - вызывает модель чтения данных из базы (если данные не готовы) и переходит к выводу вьюва самой формы;
  3. (ajax) запись обьекта - вызывает модель сохраняющую данные, посылает сообщение о результате.
3 процедуры подготовки данных.
  1. Cоздания;
  2. Записи;
  3. Чтения.
Две модели:
  1. Чтения информации SELECT ..., возвращающий данные из базы;
  2. Сохранения информации В конкретном случае она чуть сложннее. Но общем, в виде:
    INSERT INTO table (a,b,c) VALUES (1,2,3)
      ON DUPLICATE KEY UPDATE a = VALUES(a), b=VALUES(b), c=VALUES(c), id=LAST_INSERT_ID(id);



Преимущество такого метода очень существенное: данные отсылаются/сохраняются/репортят но страница редактирования в браузере не перегружается (а еще можно их сохранять в localStorage, и сверять во втором экшине ).
Плохо только, что создается чистая запись, которая может отстаться чистой и в последствии. И потом возможно нужно будет консолидировать значущие записи, удалив новые не редактированные.
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Форма и экшн одна, если передается ид записи - читаем и разбрасываем по полям, если ид отсутствует - значит поля пустые, ждем заполнения, по субмиту в первом случае проверяем ид и делаем апдейт, во втором случае инсерт (в модели в обоих случаях вызывается метод save()).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы