Название | PHP. Разработка модуля комментариев для сайта |
---|---|
Автор произведения | Дмитрий Приходько |
Жанр | Компьютеры: прочее |
Серия | |
Издательство | Компьютеры: прочее |
Год выпуска | 2021 |
isbn |
$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)$~',