Вымышленный add message php. Вывод сообщений пользователю в веб-приложениях. Вернёмся к работе

Лучше черная полоса, чем белая горячка...

PHP AJAX CRUD: создание, удаление, редактирование записей в БД MySQL

В этой статье мы узнаем о том, как добавлять, редактировать и удалять записи в базе данных MySQL, используя PHP. Мы использовали обработчик JQuery, который посылает AJAX запрос к серверному скрипту. Обработчик обновляет список записей.

AJAX форма для отправки запросов на создание, удаление, редактирование

При добавлении записи форма отправляет данные PHP скрипту через AJAX запрос. В случае успешного добавления список записей перезагружается.

JQuery AJAX функции для запроса к базе данных CRUD

В функции JQuery AJAX у нас есть переключатель случаи добавить редактировать и удалять. Эти случаи генерирует различные строки запроса и ответа-данные в зависимости от действий базы данных.

function showEditBox(id) { $("#frmAdd").hide(); var currentMessage = $("#message_" + id + " .message-content").html(); var editMarkUp = ""+currentMessage+"SaveCancel"; $("#message_" + id + " .message-content").html(editMarkUp); } function cancelEdit(message,id) { $("#message_" + id + " .message-content").html(message); $("#frmAdd").show(); } function callCrudAction(action,id) { $("#loaderIcon").show(); var queryString; switch(action) { case "add": queryString = "action="+action+"&txtmessage="+ $("#txtmessage").val(); break; case "edit": queryString = "action="+action+"&message_id="+ id + "&txtmessage="+ $("#txtmessage_"+id).val(); break; case "delete": queryString = "action="+action+"&message_id="+ id; break; } jQuery.ajax({ url: "crud_action.php", data:queryString, type: "POST", success:function(data){ switch(action) { case "add": $("#comment-list-box").append(data); break; case "edit": $("#message_" + id + " .message-content").html(data); $("#frmAdd").show(); break; case "delete": $("#message_"+id).fadeOut(); break; } $("#txtmessage").val(""); $("#loaderIcon").hide(); }, error:function (){} }); }

PHP скрипт для операций CRUD

Следующий код выполняет запросы к базе данных. Этот скрипт PHP после выполнения CRUD действия обновляет записи в результате ответа AJAX.

require_once("dbcontroller.php"); $db_handle = new DBController(); $action = $_POST["action"]; if(!empty($action)) { switch($action) { case "add": $result = mysql_query("INSERT INTO comment(message) VALUES("".$_POST["txtmessage"]."")"); if($result){$insert_id = mysql_insert_id(); echo " Edit Delete " . $_POST["txtmessage"] . " "; } break; case "edit": $result = mysql_query("UPDATE comment set message = "".$_POST["txtmessage"]."" WHERE id=".$_POST["message_id"]); if($result) echo $_POST["txtmessage"]; break; case "delete": if(!empty($_POST["message_id"])) { mysql_query("DELETE FROM comment WHERE id=".$_POST["message_id"]); } break; } }

К этому моменту в данном курсе заложена основа нашего плагина, определён пользовательский hook и привязано постоянное сообщение, чтобы показать, как этот hook работает.

То, что мы не сделали, это не реализовали типы сообщений и их отображение согласно введённым пользователем данным.

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

Готовы начать?

Я с нетерпением жду продолжения урока, но есть несколько вещей, которые нам необходимо рассмотреть перед тем, как с головой окунуться в исходный код. Убедитесь, что в вашей системе установлено следующее программное обеспечение:

  • PHP 5.6.25 и MySQL 5.6.28
  • Apache или Nginx
  • WordPress 4.6.1
  • Предпочитаемый вами IDE или редактор

И если вы ищете решение "все-в-одном", не забудьте попробовать MAMP .

Мы продвинулись до

Как упоминалось ранее, мы находимся ровно в середине этого курса. Если вы пропустили какой-то из первых уроков, вот то, что мы рассмотрели к настоящему моменту:

  • В первом уроке , мы сосредоточились на минимальной основе для создания нашего плагина и на том, что необходимо иметь на старте.
  • В второй части , мы продвинулись с плагином дальше, немного дополнив базовую страницу администрации в WordPress. Ещё мы назначили пользовательский hook, который используем и провели его на стороне сервера. Также мы задали основные параметры для нашего Settings Messenger.
  • И вот что мы рассмотрим на заключительном этапе обучения:

  • Мы свяжем все это вместе, посмотрим в действии и сделаем плагин публично доступным для скачивания.
  • В настоящее время у нас есть иные задачи, на них мы и сосредоточимся.

    Вернёмся к работе

    Поскольку мы обратились к работе (и, как было сказано в предыдущих уроках), мы стремимся к дальнейшей реализации задач в этой части:

    В этом уроке мы продолжим развитие нашего Settings Messenger путём добавления поддержки для успешных и ошибочных сообщений, а также затронем вопросы безопасности.

    В предыдущей статье , мы начали работу в Settings Messenger, но только до настройки функции, которая будет постоянно отображать успешное уведомление во время загрузки пользовательской страницы.

    В этом уроке мы добавим поддержку для ошибочных, предупреждающих и успешных сообщениях. Затем выведем их на экран, чтобы получить представление как messenger будет работать.

    Кроме того, мы собираемся внести ещё одно изменение, которое добавит поддержку для отклонения уведомлений по усмотрению пользователя.

    Это весь план необходимой работы на этот урок. Давайте начнем.

    Расширение Settings Messenger

    Помните, что вся суть Settings Messenger состоит в определении для нас своего способа работы с пользовательскими сообщениями, пользовательскими hooks и родной WordPress API для отображения сообщений в контексте WordPress панели администрации.

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

    Успешные сообщения

    Поскольку мы начали с успешных сообщений в предыдущем уроке, давайте с ними и продолжим. Теперь у нас есть жестко-кодированный метод, который отображает единственный приём:

    Главное новшество - в объекте $global_content, название которого говорит само за себя. В данном случае он принадлежит классу Outputable, в реальных задачах вы, наверное, создадите отдельный класс для контента страницы.

    Если внимательно присмотреться, то содержательная часть скрипта практически не изменилась - тот же inbox, тот же toPage(). Добавлена инструкция, которая содержимое списка сообщений выводит в контент страницы. Для разнообразия теперь генерируется два сообщения.

    Для того, чтобы посмотреть на результат, осталось только подготовить XSL-шаблон.
    style.xsl

    XSLT Example

    message

    Чего же мы добились?

    Прежде всего, можно смелее браться за сложные проекты - обеспечена реальная независимость модулей. Порядок укладки результатов на страницу теперь контролируется с помощью внешнего XSL-шаблона и не зависит от порядка запуска модулей.

    Любой модуль, который генерирует XML-данные в качестве результата своей работы, может быть использован в проекте. Кстати, это одно из преимуществ перед template-движками, в которых создание данных заключается в последовательности вызова методов (assign и т.п.) конкретного движка, на которых нет общего стандарта.

    Еще одно преимущество - легкость отладки. Если вы запустите скрипт, то заметите, что на каждой странице присутствует debug-вывод - XML-прообраз, который здорово упрощает отладку приложений.

    Над чем надо еще подумать - как создавать объекты-сообщения. Не всегда удобно использовать new непосредственно в клиентском коде. Но, пожалуй, это тема для отдельной статьи.

    Напоследок, галопом о перспективах:

    * всплывающие окна для списка важных сообщений
    * "страницы-отправители" и "страницы-адресаты" в сообщениях
    * ведение лога сообщений в базе данных
    * кнопка "показать историю моих действий"
    * статистический анализ действий пользователей в пределах сессий
    * "интеллектуальные помощники" в веб-приложениях

    Публикации по теме