PHP. Разработка модуля комментариев для сайта. Дмитрий Приходько. Читать онлайн. Newlib. NEWLIB.NET

Автор: Дмитрий Приходько
Издательство: Автор
Серия:
Жанр произведения: Компьютеры: прочее
Год издания: 2021
isbn:
Скачать книгу
Administrator', 'Контроль комментариев')";

      $sql_userole = "REPLACE INTO authorrole (authorid, roleid) VALUES

      (1, 'admin')";

      /* Для комментариев */

      $sql_say = "CREATE TABLE IF NOT EXISTS say (

      id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,

      saytext TEXT,

      userid int(11),

      saydate int(11)

      ) DEFAULT CHARACTER SET utf8 ENGINE=InnoDB";

      /* Для ответов на комментарии */

      $sql_reply = "CREATE TABLE IF NOT EXISTS reply (

      id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,

      replytext TEXT,

      userid int(11),

      replyid int(11),

      replydate int(11)

      ) DEFAULT CHARACTER SET utf8 ENGINE=InnoDB";

      /* 4. Создаем таблицы */

      $dsn->exec($sql_users);

      $dsn->exec($sql_authorrole);

      $dsn->exec($sql_role);

      $dsn->exec($sql_roledesc);

      $dsn->exec($sql_userole);

      $dsn->exec($sql_say);

      $dsn->exec($sql_page);

      $dsn->exec($sql_reply);

      } catch (PDOException $e) {

      echo $e->getMessage();

      }

      /* 5. Смайлы */

      try {

      $sql_smile = "CREATE TABLE IF NOT EXISTS smiles (

      id INT(11) AUTO_INCREMENT PRIMARY KEY NOT NULL,

      smile text,

      path text)";

      $dsn->exec($sql_smile);

      } catch (PDOException $e) {

      echo $e->getMessage();

      echo $e->getLine();

      exit();

      }

      $dir = $_SERVER['DOCUMENT_ROOT'].'/chat/say/smiles/';//строим путь к папке smiles

      $files1 = preg_grep('~\.(jpeg|jpg|png|gif)$~', scandir($dir));//делаем массив из картинок в папке smiles

      try {

      $sql = 'INSERT INTO smiles SET

      smile = :smile,

      path = :path';

      $s = $dsn->prepare($sql);

      foreach ($files1 as $val) {

      $smile = pathinfo($val, PATHINFO_FILENAME); //получаем путь к смайлу

      $smile = str_replace($smile, ":$smile:", $smile); //делаем условное обозначение смайла

      $path = '/chat/say/smiles/'.$val;//строим наш путь к смайлу

      $s->bindValue(':smile', $smile);

      $s->bindValue(':path', $path);

      $s->execute();

      }

      } catch (PDOException $e) {

      echo $e->getMessage();

      echo $e->getLine();

      exit();

      }

      echo '<br>'.'Все таблицы успешно созданы';

      В этом файле мы сначала включаем вывод всех сообщений об ошибках кодом: error_reporting(E_ALL). Это необходимо на этапе разработки, чтобы иметь возможность сразу выявлять и обрабатывать ошибки. После отладки всего приложения данную строку необходимо будет или удалить или закомментировать.

      Затем подключаемся к СУБД MySQL. Для подключения необходимы следующие параметры:

      Имя хоста: $host = "localhost";

      Имя пользователя СУБД: $root = "root";

      Пароль к СУБД: $root_password = "";

      Для подключения к БД:

      Название БД: $db = "beseder",

      Первые три значения по умолчанию. На реальном сайте предоставляются «хостером». Четвертый параметр это название для создаваемой новой базы данных. В ней будут хранится комментарии, ее название придумывается самостоятельно. У меня БД названа «beseder».

      Далее подключаемся к СУБД MySQL при помощи PDO (PHP Data Objects), PDO определяет интерфейс для доступа к базам данных в PHP[manual]. Подключение выполняется согласно мануала PDO с явным перехватом ошибок в блоке catch[7].

      Внимание! далее все подключения к бд будут выполнятся только с использованием блоков try и Catch

      При успешном создании БД выводится сообщение: 'База создана (OK!)Имя базы $db’. После создания базы закрываем подключение.

      Снова открываем подключение, но теперь коннектимся не к СУБД, а к созданной БД. Создаем и затем выполняем SQL запросы на создание таблиц.

      Типы полей для хранения данных принимаем следующие:

      – для чисел «int»;

      – для текста «text»;

      – для коротких строк «varchar».

      Смайлы, выделены в отдельный блок. Принцип работы следующий, проверяем папку «smiles» на наличие картинок:

      $files1 = preg_grep('~\.(jpeg|jpg|png|gif)$~',