Публикации

Пользователь:

Пароль:


Запомнить

Регистрация
Забыли пароль?



Пользователей: 3892
Новичок: doktor_a
Поддержи проект
Поддержите проект Webmoney
R197422573540
E197270426287
Z701768662172
Сказали «Спасибо»

Навигация

Пишем свой плагин к e107. Урок II


Автор: Metaller
 9.0 - 10 голосов -

Урок II

На этом уроке мы рассмотрим файл конфигурирования нашего плагина, а также встроенные возможности Е107 для работы с базами данных.

На прошлом уроке в файле описания мы задали имя конфигу:

  1. $eplug_conffile = "anekdot_conf.php";


Вот этот файл мы сейчас и будем создавать.

Ну, в общем-то начало стандартное практически для всех окошек в е107:

  1. <?
  2. require_once("../../class2.php");
  3. if(!getperms("P")){ header("location:".e_BASE."index.php"); }

Потом цепляем модуль аутентификации:

  1. require_once(e_ADMIN."auth.php");


дабы простые пользователи не могли рулить настройкой.

Есть и другой вариант. Например, в е107 есть глобальные переменные, одна из них называется ADMIN и установлена в значении TRUE, если пользователь авторизовался и является админом. То есть данную строку можно было заменить на:

  1. if(!ADMIN){ header("location:".e_BASE."index.php"); exit; }


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

  1. if(IsSet($_POST['updatesettings'])){


Тут мы проверяем, пришло ли нам что-нибудь с запросом страницы и если пришло, значит, нужно добавлять строки в базу.

Теперь самое интересное:
  1.  
  2.        $new_anek = $_POST['new_anek'];
  3.                    $sql = new db;
  4.                    $sql -> db_Insert("anekdot","'{$new_anek}'");
  5.                    $message = "Настройки обновили.";
  6.                  }


Тут необходимо остановиться подробнее.
Авторы сайта сделали ряд функций для работы с базой данных, которые облегчают нам с вами жизнь. Описание функций и их использование написаны в файле mysql_class.php в директории с заголовочными файлами.

Одна из этих функций тут используется: db_Insert, в файле описания mysql_class.php можно найти описание этой функции. Примерно оно выглядит так:

  1. function db_Insert($table, $arg, $debug=FALSE){
  2.                 /*
  3. # Insert with args
  4.                 #
  5.                 # - parameter #1:       строка $table, имя таблицы
  6.                 # - parameter #2:       строка $arg, вставляет строку в таблицу
  7.                 # - return возвращает идентификатор, или ошибку
  8.                 */


Давайте посмотрим, насколько авторы облегчили нам жизнь, и какой есть еще вариант работы. Если бы не было этих функций, то пришлось бы писать примерно так (пример почти в самом коротком варианте):

  1. <?
  2. $link = mysql_connect("mysql_host", "mysql_login", "mysql_password") or die ("Нет соединения с хостом");
  3. mysql_select_db ("my_database") or die ("Нет соединения с базой");
  4. $query = "INSERT INTO …..";
  5. $result = mysql_query ($query);
  6. mysql_close($link);


Как видим, строк ушло больше, также нужно забивать сюда логин, пароль, полное название таблиц и т.д., а используя функции е107 - только две строки:

  1. $sql = new db;
  2. $sql -> db_Insert("anekdot", "'{$new_anek}'");


По-моему, заметно удобнее и проще. Рассмотрим более детально db_Insert:
  1.  
  2. db_Insert(“таблица”, “список значений”)


Если вспомнить скрипт создания таблицы, который мы написали в первом уроке, то мы создали таблицу с двумя полями:

  1. id int(9) NOT NULL auto_increment,
  2.  anek text NOT NULL


Поскольку поле id автоувеличивающееся, то его заполнять нам не нужно и остается одно поле anek. Список значений заполняется через запятую.

  1. $sql -> db_Insert("anekdot","'{$new_anek}'");


Также следует заметить, что таблица полностью называется е107_anekdot, но в данном случае движок опять же сам за нас добавит недостающую часть имени, т. е. ту, которую вы указали при установке движка.

Идем дальше.
А дальше, собственно, идет форма для добавления анекдотов. Тут все просто и понятно:

  1. $text='<form name="addanek" action="anekdot_conf.php" method="post">';
  2. $text .='<textarea name="new_anek" rows=5 cols=20 wrap="off">';
  3. $text .='анек пишем сюды';
  4. $text .='</textarea><BR>';
  5. $text .='<input type="submit" name="updatesettings" value="Send">';
  6. $text .='</form>';


Тут же появляется updatesettings, при приеме которого мы выше определяли - нужно добавлять строки в базу или нет. Стоит нажать на кнопку в форме, как это значение установится и страница перегрузится.

Ну и стандартное окончание любого админского окошка в е107:

  1. $ns -> tablerender("<div style='text-align:center' >добавление анекдотов</div>", $text);
  2. require_once(e_ADMIN."footer.php");
  3. ?>


На следующем уроке мы займемся выборкой анекдотов из базы.

Удачи!