Литмир - Электронная Библиотека
A
A

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)$~', scandir($dir));

где preg_grep возвращает массив, состоящий из элементов входящего массива, которые соответствуют заданному шаблону, в данном случае из папки «smiles» возвращаются только «картинки».

Создаем в цикле условные обозначения для смайлов:

$smile = pathinfo($val, PATHINFO_FILENAME);

$smile = str_replace($smile, ":$smile:", $smile);

где pathinfo – возвращает информацию о пути к файлу,

str_replace (что меняем, на что меняем, где меняем) – заменяет все вхождения строки поиска на строку замены;

и строим пути к картинкам:

$path = '/say/smile/'.$val;

При успешном завершении кода выводим сообщение:

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

Запускаем сайт. Добавляем после «news» в адресную строку /chat/admin/createbase.php. Обновляем страницу. Должно получиться следующее.

PHP. Разработка модуля комментариев для сайта - _10.jpg

Рис. 11 Результат работы файла createbase.php

Заходим в phpMyAdmin и проверяем. В списке БД должна появится новая база «beseder».

phpMyAdmin находится на вкладке «дополнительно» «Open Server».

PHP. Разработка модуля комментариев для сайта - _11.jpg

Рис. 12. Проверяем наличие созданной БД

Файл работает. Для интереса, можете посмотреть, какие таблицы созданы.

На данном этапе БД не нужна, поэтому удаляем. В phpMyAdmin:

– выбираем базу «beseder»;

– жмём кнопку «Операции»;

– жмем кнопку «Удалить базу данных (DROP)».

Для того чтобы выполнять удаление не входя в phpMyAdmin средствами PHP, создаем файл «drop» и размещаем его также в папке «admin». Теперь можно будет удалять базу переходя по адресу: news/chat/admin/drop.php

Листинг 5. drop.php Путь: news/chat/admin/drop.php

<?php

include_once $_SERVER['DOCUMENT_ROOT'].'/chat/dsn.php';

try {

$sql = 'DROP DATABASE beseder';

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

} catch (PDOException $e) {

echo $e->getMessage();

exit('Ошибка подключения к базе данных');

}

header('Location: /');//переходим на главную страницу

В этом скрипте мы сначала подключаемся к нашей базе данных beseder, а затем выполняем SQL запрос DROP DATABASE удаляющий все таблицы в указанной базе данных и саму базу. В результате выполнения данного оператора база удаляется полностью.

*файл подключения к БД dsn.php будет рассмотрен в следующем разделе.

5. Файл подключения к базе данных

Теперь нужен файл, при помощи которого можно будет создавать подключения к БД. В корне папки «chat» создаем файл «dsn.php» со следующим содержимым:

Листинг 6. dsn.php Путь: news/chat/dsn.php

<?php

try {

$dsn = new PDO('mysql:host=localhost;dbname=beseder', 'root', '');

$dsn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$dsn->exec('SET NAMES "utf8"');

} catch (PDOException $e) {

echo $e->getMessage();

echo $e->getLine();

exit();

}

Он будет вставляться в те PHP файлы, где потребуется обращение к базе данных.

Внимание! В строке подключения к БД:

$dsn = new PDO('mysql:host=localhost;dbname=beseder', 'root', '');

необходимо вставить соответствующие значения: имя хоста, имя БД, имя пользователя, пароль пользователя, если они отличны от используемых по умолчанию

Выводу ошибок PDO::ATTR_ERRMODE задаем режим выброса исключений PDO::ERRMODE_EXCEPTION свойства которого будут отражать код ошибки и ее описание. Этот режим полезен при отладке, так как сразу известно, где в программе произошла ошибка. Это позволяет быстро локализовать и решить проблему. Режим исключений также полезен, так как дает возможность структурировать обработку ошибок более тщательно, нежели с обычными предупреждениями PHP, а также с меньшей вложенностью кода, чем в случае работы в тихом режиме с явной проверкой возвращаемых значений при каждом обращении к базе данных [7]. Устанавливаем кодировку обращения к БД по умолчанию как UTF-8.

6.

Установка

администратора

базы данных

Теперь необходимо установить «Администратора» базы данных, т.е. пользователя сайта которому разрешены операции с базой данных. Для этого в папке «admin» создаем подпапку «users», в которой будут находиться файлы по работе с пользователями.

Задавать данные администратора удобнее через форму. В папке «users» создаем файл «form_create_admin.php». Это обычная HTML форма.

Расширение для этого и всех последующих HTML файлов, содержащих php код, принимаем как .php

Делается это затем, что лучше лишний раз подстраховаться, на предмет сохранения работоспособности кода в той конфигурации, в которой программа будет работать, а не в той, в которой она разрабатывается. Это замечание касается обработки PHP кода в HTML файле на хостинге.

6
{"b":"759925","o":1}