- •Создание Web-интерфейса администрирования MySql базы "Телефонные переговоры" с помощью php-скриптов
- •1. Задание на курсовую работу по дисциплине «Корпоративные информационные системы»
- •Цель курсовой работы
- •Содержание задания
- •2. Введение
- •Проектная часть
- •Создание базы данных MySql
- •Анализ технического задания База данных "Телефонные переговоры"
- •3.1.2 Создание базы данных «Телефонные переговоры»
- •Создание сайта с использованием php-скриптов
- •Использование шаблонизатора smarty
- •3.3.1 Шаблонизатор Smarty
- •3.3.2 Использование шаблонов smarty в проекте
- •Заключение.
3.1.2 Создание базы данных «Телефонные переговоры»
В качестве инструментальных средств использовались Denwer 3 с phpmyadmin, MySQL Server 5.1.
Для начала работы потребовалось запустить Denwer и набрать в адресной строке браузера: http://localhost/tools/phpmyadmin/
Рис.1 «Создание новой базы данных»
При создании базы данных используется кодировка cp1251_general_ci, т.к. она является стандартной 8-битной кодировкой для всех русских версий Microsoft Windows.
После чего создаётся два новых пользователя (администратор и гость) с заданием имени и пароля, на основе которых определяются права пользователя системы.
Рис.2 «Добавление пользователя»
Следующим этапом является непосредственное создание и заполнение таблиц базы данных.
Рис.3 «Создание таблиц»
Достаточно простой интерфейс phpmyadmin помогает упростить процесс добавления таблиц, по сравнению с разработкой SQL скриптов в консоли. Как видно на рис.3 заполнять требуется лишь несколько полей: имя, тип, длинна (когда тип-символьный) и индекс (Primary), позволяющий указать ключевое поле.
Так выглядело бы создание той же таблицы City в виде SQL-скрипта:
CREATE TABLE IF NOT EXISTS `city` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`city` varchar(20) CHARACTER SET utf8 NOT NULL,
`cod` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=13 ;
Заполнение таблиц происходит в новой форме, где указывается значения соответствующих полей, как представлено на рис.4. Поле ID можно оставлять пустым, т.к. оно является первичным ключом и будет заполняться автоматически.
Рис.4 «Заполнение таблицы»
Результатом заполнения будет таблица представленная на рис.5.
Рис.5 «Таблица Klient»
В командной строке реализация осуществлялась бы с помощью SQL-команды INSERT следующим образом:
INSERT INTO `klient` (`id`, `name`, `phone`, `address`) VALUES
(1, 'Созонова Мария Васильевна', '68-15-43', 'Ульяновск, ул.Ленина, д.7, кв.8 '),
(2, 'Петрова Инна Львовна', '75-09-18', 'Ульяновск, ул.Кузоватовская, д.40, кв.15'),
(3, 'Ткачева Любовь Михайловна', '31-15-86', 'Самара, ул.Комсомольская, д.6, кв.9'),
(4, 'Иванова Анна Петровна', '69-19-51', 'Самара, ул.Красноармейская, д.35, кв.230'),
(5, 'Сотин Евгений Юрьевич', '17-30-28', 'Ульяновск, ул.Гончарова, д.26, кв.12'),
(6, 'Балашев Евгений Иванович', '49-08-69', 'Казань, ул.Бегичева, д.12, кв.8'),
(7, 'Антропов Геннадий Сергеевич', '73-48-19', 'Казань, ул.Островского, д.8, кв.15'),
(8, 'Кутинова Наталья Ильинична, '15-63-21', 'Москва, ул.Горького, д.45, кв.19'),
(9, 'Ульянов Илья Петрович', '48-36-72', 'Москва, ул.Тверская, д.16, кв.73'),
(10, 'Козлова Анна Львовна', '12-38-76', 'Пермь, ул.Адмиралтейская, д.32, кв.315');
Создание сайта с использованием php-скриптов
Как только база данных была сформирована, к активному режиму перешёл следующий этап – создание сайта. Первым делом была создана главная страница index.php, которая не несёт под собой особого функционала, т.к. создана в качестве библиотеки, хранящей список таблиц БД, к которым можно получать доступ и вносить изменения.
<body>
<h1> Список таблиц </h1>
<ol>
<li><a href = "client.php">Клиент</a>
<li> <a href = "tarif.php">Тариф </a>
<li> <a href = "city.php">Город </a>
<li> <a href = "call.php">Звонки </a>
</body>
В дальнейшем потребовалось подключить базу данных к Web-интерфейсу. Чтобы получить доступ к БД из Web, используя PHP, необходимо выполнить следующие шаги:
Подключение к серверу MySQL;
Выбор базы данных;
Выполнение запроса к базе данных;
Получение результата запроса;
Отсоединение от базы данных.
Для подключения к серверу MySQL в PHP использовалась функция mysql_connect( ).
Таким образом была подключена первая таблица БД «city»:
<?
if (!$link = mysql_connect('localhost', 'root', '')) {
echo 'Не удалось подключиться к mysql';
exit;
}
if (!mysql_select_db('newbas', $link)) {
echo 'Не удалось выбрать базу данных';
exit;
}
$sql = 'SELECT * FROM city';
$result = mysql_query($sql, $link);
if (!$result) {
echo "Ошибка DB, запрос не удался\n";
echo 'MySQL Error: ' . mysql_error();
exit;
}
echo "<table width=100% border = 1>";
echo "<tr><td>N<td>city<td>cod</tr>";
while ($row = mysql_fetch_assoc($result)) {
echo "<tr><td>".$row['id']."<td>".$row['city']."<td>".$row['cod']."</tr>";
}
echo "</table>";
mysql_free_result($result);
echo "<a href = 'index.php'>Главная</a>";
?>
После создания остальных страниц с данными, следующей задачей встала возможность управления, внесения изменений в таблицы, т.е. администрирования.
Для создания возможности добавления информации в таблицы потребовалось создать соответствующие формы под каждую из них, с указанием необходимых полей. Например, форма для таблицы «Клиент» add_client.php:
<form name = "add_client_form" action = "add_client_in_BD.php" method = "POST">
ФИО <input type = "text" name = "fio"> <br> <br>
Телефон <input type = "text" name = "phone"> <br> <br>
Адрес <input type = "text" name = "address"> <br> <br>
<input type = "submit">
</form>
Как видно, в коде указана ссылка на следующий скрипт: add_client_in_BD.php, который выполняет непосредственную реализацию задуманного, внося заполненные изменения в базу данных с помощью sql запроса INSERT.
<?
error_reporting(0);
if (!$link = mysql_connect('localhost', 'root', '')) {
echo 'Не удалось подключиться к mysql';
exit;
}
if (!mysql_select_db('newbas', $link)) {
echo 'Не удалось выбрать базу данных';
exit;
}
$sql = "INSERT into klient (name, phone, address) values ('".$_POST['fio']."','".$_POST['phone']."','".$_POST['address']."')";
$result = mysql_query($sql, $link);
mysql_free_result($result);
header ("Location: http://lab1.local/client.php");
?>
Реализация удаления осуществляется гораздо проще, и всего лишь одним скриптом для каждой таблицы, с помощью sql-запроса DELETE:
<?
error_reporting(0);
if (!$link = mysql_connect('localhost', 'root', '')) {
echo 'Не удалось подключиться к mysql';
exit;
}
if (!mysql_select_db('newbas', $link)) {
echo 'Не удалось выбрать базу данных';
exit;
}
$sql = "DELETE from klient where id = ".$_GET['id'];
$result = mysql_query($sql, $link);
mysql_free_result($result);
header ("Location: http://lab1.local/client.php");
?>
Удаление осуществляется при нажатии на крестик напротив соответствующей записи, подобный способ реализован в основном php-скрипте таблицы client.php:
<td align = 'center'><a href = 'delete_client.php?id=".$row['id']."'
onclick= \"return confirmDelete ('Вы действительно хотите удалить запись?')\">
<image src = 'images/b_drop.png'></tr>";
Наиболее сложным оказалось создание скриптов для редактирования базы данных. Аналогично как с удалением, редактирование осуществляется при нажатии на картинку напротив записи.
<td align = 'center'><a href = 'edit_form.php?id=".$row['id']."'><img src = 'images/b_edit.png'> </tr>";
При нажатии происходит переход в форму редактирования edit_form.php. Процедура вызова формы намного затрудняется, т.к. прежде чем вносить изменения необходимо получить доступ к изменяемым данным, для этого в данном скрипте используется sql-запрос SELECT:
<?
if (!$link = mysql_connect('localhost', 'root', '')) {
echo 'Не удалось подключиться к mysql';
exit;
}
if (!mysql_select_db('newbas', $link)) {
echo 'Не удалось выбрать базу данных';
exit;
}
$sql = 'SELECT * FROM klient where id = '.$_GET['id'];
$result = mysql_query($sql, $link);
if (!$result) {
echo "Ошибка DB, запрос не удался\n";
echo 'MySQL Error: ' . mysql_error();
exit;
}
while ($row = mysql_fetch_assoc($result)) {
echo "<form name = \"add_client_form\" action = \"edit_client_in_BD.php\" method = \"POST\">";
echo "ФИО <input type = \"text\" name = \"fio\" size = 50 value = \"".$row['name']."\"><br><br>";
echo "Телефон <input type = \"text\" name = \"phone\" size = 50 value = \"".$row['phone']."\"><br><br>";
echo "Адрес <input type = \"text\" name = \"address\" size = 50 value = \"".$row['address']."\"><br><br>";
echo "<input type = \"hidden\" name = \"id\" value = \"".$row['id']."\">";
echo "<input type = \"submit\">";
echo "</form>";
}
?>
Затем в силу вступает второй скрипт edit_client_in_BD.php, как ясно из названия, предназначенный для непосредственного внесения изменений в саму базу данных с помощью sql-запроса UPDATE
<?
error_reporting(0);
if (!$link = mysql_connect('localhost', 'root', '')) {
echo 'Не удалось подключиться к mysql';
exit;
}
if (!mysql_select_db('newbas', $link)) {
echo 'Не удалось выбрать базу данных';
exit;
}
$sql = "UPDATE klient set name = '".$_POST['fio']."', phone = '".$_POST['phone']."', address = '".$_POST['address']."' where id = ".$_POST['id'];
//echo $sql;
$result = mysql_query($sql, $link);
mysql_free_result($result);
header ("Location: http://lab1.local/client.php");
?>
По такому же принципу создаются и остальные скрипты для редактирования, добавления и удаления данных.
