Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пояснительная записка К ИС.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
316.42 Кб
Скачать

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');

    1. Создание сайта с использованием 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");

?>

По такому же принципу создаются и остальные скрипты для редактирования, добавления и удаления данных.