Лабораторна робота №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
1.Добавити запис в базу даних
form1.html <html> <head> <title>form1</title> <body> <form method=post action="form1.php"> <br><b>Введіть назву марки:</b> <br><input name="name" value="" size=10> <br><br><b>Введіть висоту марки:</b> <br><input name="height" value="" size=10>
<br><br><b>Введіть ширину марки:</b> <br><input name="width" value="" size=10><br><br><b>Введіть форму марки:
<br><input name="form" value="" size=10>
<br><b>Введіть ціну марки:</b> <br><input name="prise" value="" size=10> <br><br><b>Введіть країну марки:</b> <br><input name="country" value="" size=10>
<br><br><b>Введіть рік марки:</b> <br><input name="year" value="" size=10><br><br><b>Введіть id власника марки:
<br><input name="id_club_person" value="" size=10>
<br><br><b>Введіть П.І.Б. власника марки:</b> <br><input name="FSname" value="" size=10><br><br><b>Введіть телефон власника марки:
<br><input name="telephone" value="" size=10>
<br><b>Введіть статус власника марки:</b> <br><input name="rank" value="" size=10> <br><br><b>Введіть рік вступу власника:</b> <br><input name="year_enter" value="" size=10>
<br><br><b>Введіть назва клубу-партнера:</b> <br><input name="name_club_partner" value="" size=10>
<br><br><b>Введіть адреса клубу-партнера:</b> <br><input name="adress_club_partner" value="" size=10><br><br><b>Введіть П.І.Б. голови клубу-партнера:
<br><input name="FSname_gover" value="" size=10><br><br><input type="submit" value="Зареєструвати"> </form> </body> </html>
2. Знайти запис по Id марки
form2.html <html> <head> <title>Виборка даних</title> <body> <form action="form2.php" method="post"> <b>Введіть id марки <b> <input type="text" name="name" size=30> <input type="submit" value="Ввести!"> </form> </body> </html>
3.Видалити запис
form3.html <html> <head> <title>Виборка даних</title> <body> <form action="form3.php" method="post"> <b>Введіть id марки для видалення:<b> <input type="text" name="name" size=30> <input type="submit" value="Ввести!"> </form> </body> </html>
4.Відредагувати запис
form4.html <html> <head> <title>Коректування даних</title> <body> <form action="form4.php" method="post"> <b>Введіть id марки, дані для якої необхідно змінити:<b> <br><input type="text" name="name" size=30> <input type="submit" value="Ввести!"> </form> </body> </html>
Тексти програм на мові PНР:
form1.php <? /* Визначаємо значення змінним */ $hostname="localhost"; $username="dima"; $password="admin"; /* Ім'я бази даних */ $dbName="dimadb"; /* Таблиця MySQL */ $usertable="dimatab1"; /* Створити з'єднання */ MYSQL_CONNECT($hostname,$username,$password) OR DIE("Не можу під'єднатися"); /* Вибір БД */ MYSQL_SELECT_DB($dbName) or die("Не можу вибрати БД"); /* Введення інформації в БД */ $query="INSERT INTO $usertable VALUES ('$name','$height','$width','$form','$prise','$country','$year','$id_club_person','$FSname','$telephone','$rank','$year_enter','$name_club_partner','$adress_club_partner','$FSname_gover')"; $result=MYSQL_QUERY($query); /* Закрити з'єднання */ MYSQL_CLOSE(); print "Запис введений в БД! <br>"; print "<a href='../php/'>Назад в меню</a>"; ?>
form2.php <?php $hostname="localhost"; $username="dima"; $password="admin"; $dbName="dimadb"; $usertable="dimatab1"; mysql_connect($hostname,$username,$password) or die("Не можу під'єднатися "); mysql_select_db("$dbName") or die("Не можу вибрати БД"); /* Вибрати марки, рік випуску яких $year_search */ $query="select * from $usertable where year like '$year%'"; $result=mysql_query($query); /* Скільки знайшлося таких марок? */ $number=mysql_numrows($result); /* Роздрук вибраних марок */ $i=0; if ($number == 0) { { print "Немає даних про $year в БД <br>"; } elseif ($number > 0) { while ($i < $number) { /* Привласнення змінним значень полів name, height, width, form, prise, country, year, id_club_person, FSname, telephone, rank, year_enter, name_club_partner, adress_club_partner, FSname_gover для i-го рядка */ $name=mysql_result($result,$i,"name"); $height=mysql_result#@:; $width=mysql_result#@;; $form=mysql_result#@;;
$prise=mysql_result#@:;
$country=mysql_result#@:;
$year=mysql_result#@:;
$id_club_person=mysql_result#@:;
$FSname=mysql_result#@:;
$telephone=mysql_result#@:;
$rank=mysql_result#@:;
$year_enter=mysql_result#@:;
$name_club_partner=mysql_result#@:;
$adress_club_partner=mysql_result#@:;
$FSname_gover=mysql_result#@
?>
form3.php <?php $hostname="localhost"; $username="dima"; $password="admin"; $dbName="dimadb"; $usertable="dimatab1"; mysql_connect($hostname,$username,$password) or die("Не можу під'єднатися "); mysql_select_db("$dbName") or die("Не можу вибрати БД"); /* Видалення запису для поля name */ $query="delete from $usertable where name='$name'"; $result=mysql_query($query); print "Запис видалений <br>"; print "<a href='../php/'>Назад в меню</a>"; ?>
form4.php <?php $hostname="localhost"; $username="dima"; $password="admin"; $dbName="dimadb"; $usertable="dimatab1"; mysql_connect($hostname,$username,$password) or die("Не можу під'єднатися "); mysql_select_db("$dbName") or die("Не можу вибрати БД"); /* Вибір запису по полю name */ $query="select * from $usertable where name='$name'"; $result=mysql_query($query); /* Визначення існування вибраного запису */ $number=mysql_numrows($result); if ($number==0) { print "Немає такого запису!<br>"; print "<a href='../php/'>Назад в меню</a>";} else { /* Якщо запис вибраний з бази даних, вивести всі її поля у форму для редагування і видалити її */ $name=mysql_result($result,0,"name"); $height=mysql_result($result,0,"height");
$width=mysql_result($result,0,"width");
$form=mysql_result($result,0,"form");
$prise =mysql_result($result,0,"prise");
$country=mysql_result($result,0,"country");
$year=mysql_result($result,0,"year");
$id_club_person=mysql_result($result,0,"id_club_person");
$FSname=mysql_result($result,0,"FSname");
$telephone=mysql_result($result,0,"telephone");
$rank=mysql_result($result,0,"rank");
$year_enter=mysql_result($result,0,"year_enter");
$name_club_partner=mysql_result($result,0,"name_club_partner");
$adress_club_partner=mysql_result($result,0,"adress_club_partner");
$FSname_gover=mysql_result($result,0,"FSname_gover"); /* Видалення запису */ $query="delete from $usertable where name='$name'"; $result=mysql_query#@:; /* Створення форми для редагування */ print "<form method=post action='form5.php'>"; print "<br><b>Введіть назву марки:</b>"; print "<br><input name='name' value='$name' size=30>"; print "<br><br><b>Введіть висоту марки:</b>"; print "<br><input name='height' value='$height' size=30>";
print "<br><br><b>Введіть ширину марки:</b>"; print "<br><input name='width' value='$width' size=30>";
print "<br><br><b> Введіть форму марки:</b>"; print "<br><input name='form' value='$form' size=30>";
print "<br><br><b>Введіть ціну марки:</b>"; print "<br><input name='prise' value='$prise' size=30>";
print "<br><br><b>Введіть країну марки:</b>"; print "<br><input name='country' value='$country' size=30>";
print "<br><br><b>Введіть рік марки:</b>"; print "<br><input name='year' value='$year' size=30>";
print "<br><br><b>Введіть id власника марки:</b>"; print "<br><input name='id_club_person' value='$id_club_person' size=30>";
print "<br><br><b>Введіть П.І.Б. власника марки:</b>"; print "<br><input name='FSname' value='$FSnamesize=30>";
print "<br><br><b>Введіть телефон власника марки:</b>"; print "<br><input name='telephone' value='$telephone' size=30>";
print "<br><br><b>Введіть статус власника марки:</b>"; print "<br><input name='rank' value='$rank' size=30>";
print "<br><br><b>Введіть рік вступу власника:</b>"; print "<br><input name='year_enter' value='$year_enter' size=30>";
print "<br><br><b>Введіть назва клубу-партнера:</b>"; print "<br><input name='name_club_partner' value='$name_club_partner' size=30>";
print "<br><br><b>Введіть адреса клубу-партнера:</b>"; print "<br><input name='adress_club_partner' value='$adress_club_partner' size=30>";
print "<br><br><b>Введіть П.І.Б. голови клубу-партнера:</b>"; print "<br><input name='FSname_govervalue='$FSname_goversize=30>";
print "<br><br><input type='submit' value='Зареєструвати'>"; print "</form>"; } ?>
form5.php <? /* Визначаємо значення змінним */ $hostname="localhost"; $username="dima"; $password="admin";
/* Ім'я бази даних */$dbName="dimadb";
/* Таблиця MySQL */$usertable="dimatab1";
/* Створити з'єднання */mysql_connect($hostname,$username,$password) or die("Не можу під'єднатися ");
/* Вибір БД */mysql_select_db("$dbName") or die("Не можу вибрати БД"); /* Введення інформації в БД */ $query="INSERT INTO $usertable VALUES ('$name','$height','$width','$form','$prise','$country','$year','$id_club_person','$FSname','$telephone','$rank','$year_enter','$name_club_partner','$adress_club_partner','$FSname_gover')"; $result=MYSQL_QUERY($query); /* Закрити з'єднання */ MYSQL_CLOSE(); print "Запис введений в БД! <br>"; print "<a href='../php/'>Повернутись до меню</a>"; ?>