МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
кафедра захисту інформації
Завдання на проектування
до лабораторної роботи №3
з предмету: «Бази даних та знань»
Необхідно створити пакет програм по створенню простої бази даних(БД),її доповненню, пошуку запису, видаленню запису і її редагуванню. Пакет програм повинен містити загальне меню по виконуваних діях в якому повинен бути встановлений лічильник відвідування цієї сторінки. Пакет програм повинен оперувати з графічними об'єктами (наприклад, фотографії однокурсників). Текст програм повинен бути написаний на мовах HTML і php. Безпосередня робота з базою даних повинна здійснюватися за допомогою пакету СУБД MySQL. Сервер MySQL повинен знаходитися на машині localhost (там же де і Web-сервер Apache). Програми на php повинні взаємодіяти з сервером MySQL за допомогою включених в php функцій взаємодії з MySQL. Після вивчення представлених нижче текстів програм студент повинен розробити подібний пакет програм для БД, заданої у 1 та 2 лабораторній роботі. Наприклад, БД може включати поля: 1.Назва виробу 2.Час випуску 3.Коротка характеристика виробу 4. Фотографія виробу Як виріб можуть розглядатися автомобілі, літаки, судна і ін. Кожний студент повинен мати свій username в СУБД MySQL. Нижче розглянутий приклад створення користувача з username sydorak. Створення користувача sydorak: > mysql -u root -p Enter password: Welcome to MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 72 to server version: 3.22.32
Type 'help' for help.
mysql>use mysql; Database changed
mysql> select * from user; +-----------+-------+------------------+-------------+-------------+-----------+ | Host | User | Password | Select_priv |Insert_priv | Update_pri| +-----------+-------+------------------+-------------+-------------+-----------+ | localhost | root | 3aa3ee1e1d77f653 | У | У | У | | сеl | root | | У | У | У | | localhost | | | N | N | N | | сеl | | | N | N | N | | localhost |sydorak| 75cbfbdb376c43a9 | N | N | N | | localhost | admin | 12ad110a21defd86 | У | У | У | +-----------+-------+------------------+-------------+-------------+-----------+ 6 rows in set (0.00 sec)
mysql>insert into user values ('localhost','sydorak',password('sydorak'), -> 'y','y','y','y','y','n','y','n','n','n','n','n','n','n'); Query OK, 1 row affected (0.00 sec) mysql> select * from user; +-----------+--------+------------------+-------------+-------------+----------+ | Host | User | Password | Select_priv | Insert_priv | Update_pr| +-----------+--------+------------------+-------------+-------------+----------+ | localhost | root | 3aa3ee1e1d77f653 | У | У | У | | сеl | root | | У | У | У | | localhost | | | N | N | N | | сеl | | | N | N | N | | localhost | alex | 75cbfbdb376c43a9 | N | N | N | | localhost | admin | 12ad110a21defd86 | У | У | У | | localhost | sydorak| 7f6731414c9c046a | У | У | У | +-----------+--------+------------------+-------------+-------------+----------+ 7 rows in set (0.00 sec)
mysql> quit Bye > Перезавантажуємо сервер MySQL: > mysqladmin -u root -p reload Enter password: > ---------------------------------------------------------------------------------- Далі студент повинен створити свою базу даних і таблицю в ній з якими працюватиме створений пакет програм на php. Для їх створення необхідно підключитися до машини localhost. Приклад створення бази даних sydorakdb1 і таблиці в ній з ім'ям sydoraktab1 (Виконує студент!): > mysql -u sydorak -p -h 'localhost' Enter password: Welcome to MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 75 to server version: 3.22.32
Type 'help' for help.
mysql> create database sydorakdb1; Query OK, 1 row affected (0.02 sec)
mysql> use sydorakdb1; Database changed mysql> create table sydoraktab1 (user_name VARCHAR(25),phone VARCHAR(10), -> job BLOB,img VARCHAR(20)); Query OK, 0 rows affected (0.05 sec)
mysql> quit Bye
Пароль входу в базу даних у всіх однаковий і відповідає username. Для його заміни необхідно виконати команду (ввівши старий пароль): > mysqladmin -u sydorak -h 'localhost' -p password 'sydorak' Enter password: > Потім перенавантажувати MySQL (ввівши новий пароль): > mysqladmin -u sydorak -h 'localhost' -p reload Enter password: >
Тексти HTML документів для формування форм:
index.html <html> <head> <title>Menu</title> </head> <body> <b> <а href="../php/form1.html"> 1.Добавити запис в базу даних </a><br> <а href="../php/form2.html"> 2. Знайти запис по П.І.Б. </a><br> <а href="../php/form3.html"> 3.Видалити запис </a><br> <а href="../php/form4.html"> 4.Відредагувати запис </a> </b> <h5><p>Число відвідувань: <?PHP $filename = "counter.dat"; $fp = fopen($filename,"r"); if ($fp) { $counter=fgets($fp,10); fclose($fp); } else { $counter=0; } $counter++; print $counter; $fp = fopen($filename,"w"); if ($fp) { $ii=fputs($fp,$counter); fclose($fp); } ?> </h5> </body> </html> Файл counter.dat доцільно заздалегідь створити і відкрити доступ до нього для всіх користувачів за допомогою команди: >chmod 0777 counter.dat
form1.html <html> <head> <title>form1</title> <body> <form method=post action="form1.php"> <br><b>Введіть Ваше ім'я:</b> <br><input name="user_name" value="" size=30> <br><br><b>Введіть номер Вашого телефону:</b> <br><input name="phone" value="" size=10> <br><br><b>Введіть коротку характеристику: <br><TEXTAREA NAME="job" ROWS=10 COLS=40></TEXTAREA> <br><br><b>Введіть ім'я фото лат.буквами:</b> <br><input name="img" value="nofoto.jpg" size=20> <br><br><input type="submit" value="Зареєструвати"> </form> </body> </html>
form2.html <html> <head> <title>Виборка даних</title> <body> <form action="form2.php" method="post"> <b>Введите П.І.Б.<b> <input type="text" name="user_name" size=30> <input type="submit" value="Ввести!"> </form> </body> </html>
form3.html <html> <head> <title>Виборка даних</title> <body> <form action="form3.php" method="post"> <b>Введите П.І.Б. для видалення:<b> <input type="text" name="user_name" size=30> <input type="submit" value="Ввести!"> </form> </body> </html>
form4.html <html> <head> <title>Коректування даних</title> <body> <form action="form4.php" method="post"> <b>Введіть П.І.Б. особи, дані для якої необхідно змінити:<b> <br><input type="text" name="user_name" size=30> <input type="submit" value="Ввести!"> </form> </body> </html>
Тексти програм на мові PНР:
form1.php <? /* Визначаємо значення змінним */ $hostname="localhost"; $username="sydorak"; $password="sydorak"; /* Ім'я бази даних */ $dbName="sydorakdb"; /* Таблиця MySQL */ $usertable="sydoraktab1"; /* Створити з'єднання */ MYSQL_CONNECT($hostname,$username,$password) OR DIE("Не можу під'єднатися"); /* Вибір БД */ MYSQL_SELECT_DB($dbName) or die("Не можу вибрати БД"); /* Введення інформації в БД */ $query="INSERT INTO $usertable VALUES ('$user_name','$phone','$job','$img')"; $result=MYSQL_QUERY($query); /* Закрити з'єднання */ MYSQL_CLOSE(); print "Запис введений в БД! <br>"; print "<a href='../php/'>Назад в меню</a>"; ?>
form2.php <?php $hostname="localhost"; $username="sydorak"; $password="sydorak"; $dbName="sydorakdb"; $usertable="sydoraktab1"; mysql_connect($hostname,$username,$password) or die("Не можу під'єднатися "); mysql_select_db("$dbName") or die("Не можу вибрати БД"); /* Вибрати співробітників, імена яких починаються на $usr_name */ $query="select * from $usertable where user_name like '$user_name%'"; $result=mysql_query($query); /* Скільки знайшлося таких співробітників? */ $number=mysql_numrows($result); /* Роздрук вибраних співробітників */ $i=0; if ($number == 0) { { print "Немає даних про $user_name в БД <br>"; } elseif ($number > 0) { while ($i < $number) { /* Привласнення змінним значень полів user_name, phone, job, img для i-го рядка */ $user_name=mysql_result($result,$i,"user_name"); $phone=mysql_result#@:; $job=mysql_result#@;; $img=mysql_result#@
form3.php <?php $hostname="localhost"; $username="sydorak"; $password="sydorak"; $dbName="sydorakdb"; $usertable="sydoraktab1"; mysql_connect($hostname,$username,$password) or die("Не можу під'єднатися "); mysql_select_db("$dbName") or die("Не можу вибрати БД"); /* Видалення запису для поля user_name */ $query="delete from $usertable where user_name='$user_name'"; $result=mysql_query($query); print "Запис видалений <br>"; print "<a href='../php/'>Назад в меню</a>"; ?>
form4.php <?php $hostname="localhost"; $username="sydorak"; $password="sydorak"; $dbName="sydorakdb"; $usertable="sydoraktab1"; mysql_connect($hostname,$username,$password) or die("Не можу під'єднатися "); mysql_select_db("$dbName") or die("Не можу вибрати БД"); /* Вибір запису по полю user_name */ $query="select * from $usertable where user_name='$user_name'"; $result=mysql_query($query); /* Визначення існування вибраного запису */ $number=mysql_numrows($result); if ($number==0) { print "Немає такого запису!<br>"; print "<a href='../php/'>Назад в меню</a>";} else { /* Якщо запис вибраний з бази даних, вивести всі її поля у форму для редагування і видалити її */ $phone=mysql_result($result,0,"phone"); $job=mysql_result($result,0,"job"); $img=mysql_result($result,0,"img"); print "<img src='pics/$img' height=130><br>"; /* Видалення запису */ $query="delete from $usertable where user_name='$user_name'"; $result=mysql_query#@:; /* Створення форми для редагування */ print "<form method=post action='form5.php'>"; print "<br><b>Введите Ваше ім'я:</b>"; print "<br><input name='user_name' value='$user_name' size=30>"; print "<br><br><b>Введите номер Вашого телефону:</b>"; print "<br><input name='phone' value='$phone' size=10>"; print "<br><br><b>Введіть коротку характеристику:"; print "<br><TEXTAREA NAME='job' ROWS=10 COLS=40>$job</TEXTAREA>"; print "<br><br><b>Введите ім'я фото лат.буквами:</b>"; print "<br><input name='img' value='$img' size=20>"; print "<br><br><input type='submit' value='Зареєструвати'>"; print "</form>"; } ?>
form5.php <? /* Визначаємо значення змінним */ $hostname="localhost"; $username="sydorak"; $password="sydorak";
/* Ім'я бази даних */$dbName="sydorakdb";
/* Таблиця MySQL */$usertable="sydoraktab1";
/* Створити з'єднання */mysql_connect($hostname,$username,$password) or die("Не можу під'єднатися ");
/* Вибір БД */mysql_select_db("$dbName") or die("Не можу вибрати БД"); /* Введення інформації в БД */ $query="INSERT INTO $usertable VALUES ('$user_name','$phone','$job','$img')"; $result=MYSQL_QUERY($query); /* Закрити з'єднання */ MYSQL_CLOSE(); print "Запис введений в БД! <br>"; print "<a href='../php/'>Повернутись до меню</a>"; ?>