МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
ІКТА
кафедра ЗІ
З В І Т
до лабораторної роботи №3
з курсу: «Бази даних та знань»
на тему: «Проектування реляційної бази даних»
Варіант 23
Мета роботи: набути практичних навиків в створені запитів на мові SQL для створення, внесення та вибірки даних із таблиць, створення баз даних та таблиць.
ЗАВДАННЯ
Необхідно створити пакет програм по створенню простої бази даних(БД), її доповненню, пошуку запису, видаленню запису і її редагуванню. Пакет програм повинен містити загальне меню по виконуваних діях в якому повинен бути встановлений лічильник відвідування цієї сторінки. Пакет програм повинен оперувати з графічними об'єктами (наприклад, фотографії однокурсників). Текст програм повинен бути написаний на мовах HTML і php. Безпосередня робота з базою даних повинна здійснюватися за допомогою пакету СУБД MySQL. Сервер MySQL повинен знаходитися на машині localhost (там же де і Web-сервер Apache). Програми на php повинні взаємодіяти з сервером MySQL за допомогою включених в php функцій взаємодії з MySQL. Після вивчення представлених нижче текстів програм студент повинен розробити подібний пакет програм для БД, заданої у 1 та 2 лабораторній роботі.
Варіант 23
Перепис населення
Структура пакету.
Каталог /etc/www/:
Main.php – файл, який реалізує головне меню, меню управління базою даних.
Counter – файл, в якому записано кількість відвідувань головної сторінки.
inc/ - каталог, що містить інші виконавчі файли
Каталог /etc/www/inc/:
Add/ - каталог, в якому містяться файл, що здійснюють додавання даних до бд.
Edit/ - каталог, в якому містяться файли, що здійснюють редагування інф-ії.
Del/ - каталог, в якому містяться файли для видалення інф-ії з бд.
Find/ - каталог, в якому містяться файли, що здійснюють пошук даних в бд.
Пояснення, щодо назв файлів у каталогах:
В кожному каталогу містяться файли, з назвами типу
[виконавча_функція]_[таблиця_бд].[розширення].
Тобто, файл add_zamovlenja.php відповідає за додавання інформації про замовлення до бази даних, а файл del_idzamo.php за видалення даних про замовника з бд.
Можливі префікси:
Add – додавання даних в БД.
Del – вилучення даних з БД.
Find – пошук даних в БД.
Edit – редагування даних в БД.
Код виконавчих файлів:
Main.php
<html>
<head>
<title>Головне меню</title>
</head>
<body>
<b>
<h3>1.Додати запис в базу даних: </h3>
<a href="inc/add/add_zamovlenja.html"> 1.1 Додати замовлення </a><br>
<a href="inc/add/add_adress.html"> 1.2 Додати відомості про будівлю </a><br>
<a href="inc/add/add_idker.html"> 1.3 Додати керуючого проектом </a><br>
<a href="inc/add/add_idzamo.html"> 1.4 Додати замовника </a><br>
<h3>2. Знайти :</h3>
<a href="inc/find/find_zamovlenja.html">2.1 Замовлення </a><br>
<a href="inc/find/find_adress.html">2.2 Відомості про будівлю </a><br>
<a href="inc/find/find_idker.html">2.3 Керівника </a><br>
<a href="inc/find/find_idzamo.html">2.4 Замовника </a><br>
<h3>3.Видалити :</h3>
<a href="inc/del/del_zamovlenja.html">3.1 Замовлення </a><br>
<a href="inc/del/del_adress.html">3.2 Відомості про будівлю </a><br>
<a href="inc/del/del_idker.html">3.3 Керівника </a><br>
<a href="inc/del/del_idzamo.html">3.3 Замовника </a><br>
<h3>4.Відредагувати запис: </h3>
<a href="inc/edit/edit_zamovlenja.html"> 4.1 Про замовлення </a> <br>
<a href="inc/edit/edit_adress.html"> 4.2 Про будівлю </a> <br>
<a href="inc/edit/edit_idker.html"> 4.3 Про керівника </a> <br>
<a href="inc/edit/edit_idzamo.html"> 4.3 Про замовника </a> <br>
</b>
<align="center">
<h5><p>Число відвідувань:
<?php
$filename = "counter";
$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);
}
?>
</align>
</h5>
</body>
</html>
Add_adress.html
<html>
<head>
<title>Додати відомості про архітектуру</title>
<body>
<form method=post action="add_adress.php">
<br><b>Адрес:</b>
<br><input name="adress" value="" size=10>
<br><br><b>Рік:</b>
<br><input name="rik" value="" size=10>
<br><br><b>Стиль:</b>
<br><input name="stul" value="" size=10>
<br><br><b>Поверхи:</b>
<br><input name="poverhu" value="" size=10>
<br><br><b>Площа:</b>
<br><input name="ploscha" value="" size=10>
<br><br><input type="submit" value="Додати">
</form>
</body>
</html>
Add_adress.php
<?
$hostname="localhost";
$username="root";
$password="";
$dbName="restavracija";
$usertable="adress";
$adress=$_POST["adress"];
$rik=$_POST["rik"];
$stul=$_POST["stul"];
$poverhu=$_POST["poverhu"];
$ploscha=$_POST["ploscha"];
if (!empty($_POST["adress"]) && !empty($_POST["rik"]) && !empty($_POST["stul"]) && !empty($_POST["poverhu"]) && !empty($_POST["ploscha"]))
{
MYSQL_CONNECT($hostname,$username,$password) OR DIE("Неможливо підключитись");
MYSQL_SELECT_DB($dbName) or die("БД не існує");
$query="INSERT INTO $usertable VALUES ('$adress','$rik','$stul','$poverhu','$ploscha')";
$result=MYSQL_QUERY($query);
MYSQL_CLOSE();
print "Виконано! <br>";
} else { print "Заповніть всі поля!<br>";}
print "<a href='../../main.php'>Назад в меню</a>";
?>
Find_adress.html
<html>
<head>
<title>Дані про будівлю</title>
<body>
<form action="find_adress.php" method="post">
<b>Введiть адрес:<b>
<input type="text" name="adress" size=10>
<input type="submit" value="Пошук">
</form>
</body>
</html>
Find_adress.php
<?
$hostname="localhost";
$username="root";
$password="";
$dbName="restavracija";
$usertable="adress";
$adress=$_POST["adress"];
if (!empty($_POST["adress"]))
{
MYSQL_CONNECT($hostname,$username,$password) OR DIE("Неможливо підключитись");
MYSQL_SELECT_DB($dbName) or die("БД не існує");
$query="select * from $usertable where adress='$adress'";
$result=mysql_query($query);
$number=mysql_numrows($result);
if($number==0)
{print "Немає даних про $adress в БД<br>";}
else{
print "Виконано <br>";
echo "<table border='1'>
<tr>
<th>adress</th>
<th>rik</th>
<th>stul</th>
<th>poverhu</th>
<th>ploscha</th>
</tr>";
while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['adress'] . "</td>";
echo "<td>" . $row['rik'] . "</td>";
echo "<td>" . $row['stul'] . "</td>";
echo "<td>" . $row['poverhu'] . "</td>";
echo "<td>" . $row['ploscha'] . "</td>";
echo "</tr>";
}
echo "</table>";
MYSQL_CLOSE();}
} else { print "Ви не ввели дані<br>";}
print "<a href='../../main.php'>Назад в меню</a>";
?>
Edit_adress.html
<html>
<head>
<title>Редагування даних про будівлю:</title>
<body>
<form action="edit_adress.php" method="post">
<b>Введіть адрес, дані для якого необхідно змінити:<b>
<br><input type="text" name="adress" size=10>
<input type="submit" value="ok">
</form>
</body>
</html>
Edit_adress.php
<?
$hostname="localhost";
$username="root";
$password="";
$dbName="restavracija";
$usertable="adress";
mysql_connect($hostname,$username,$password) or die("Не можу під'єднатися ");
mysql_select_db("$dbName") or die("Не можу вибрати БД");
$adress=$_POST['adress'];
$query="select * from $usertable where adress='$adress'";
$result=mysql_query($query);
$number=mysql_numrows($result);
if ($number==0)
{ print "Немає такого запису<br>"; }
else {
$adress=mysql_result($result,0,"adress");
$rik=mysql_result($result,0,"rik");
$stul=mysql_result($result,0,"stul");
$poverhu=mysql_result($result,0,"poverhu");
$ploscha=mysql_result($result,0,"ploscha");
$query="delete from $usertable where adress='$adress'";
$result=mysql_query($query);
print "<form method=post action='adress.php'>";
print "<br><b>Адрес:</b>";
print "<br><input name='adress' value='$adress' size=30>";
print "<br><b>Рік:</b>";
print "<br><input name='rik' value='$rik' size=30>";
print "<br><b>Стиль:</b>";
print "<br><input name='stul' value='$stul' size=30>";
print "<br><b>Поверхи:</b>";
print "<br><input name='poverhu' value='$poverhu' size=30> ";
print "<br><b>Площа:</b> ";
print "<br><input name='ploscha' value='$ploscha' size=15> ";
print "<br><br><input type='submit' value='Зареєструвати'>";
print "</form>";
}
?>
adress.php
<?
$hostname="localhost";
$username="root";
$password="";
$dbName="restavracija";
$usertable="adress";
$adress=$_POST['adress'];
$rik=$_POST['rik'];
$stul=$_POST['stul'];
$poverhu=$_POST['poverhu'];
$ploscha=$_POST['ploscha'];
MYSQL_CONNECT($hostname,$username,$password) OR DIE("Не можу під'єднатися");
MYSQL_SELECT_DB($dbName) or die("Не можу вибрати БД");
$query="INSERT INTO $usertable VALUES ('$adress','$rik','$stul','$poverhu','$ploscha')";
$result=MYSQL_QUERY($query);
MYSQL_CLOSE();
print "Запис введений в БД! <br>";
print "<a href='../../main.php'>Назад в меню</a>";
?>
Del_adress.html
<html>
<head>
<title>Видалення даних будівлю</title>
<body>
<form action="del_adress.php" method="post">
<b>Введiть адрес для видалення:<b>
<input type="text" name="adress" size=10>
<input type="submit" value="Видалити!">
</form>
</body>
</html>
Del_adress.php
<?
$hostname="localhost";
$username="root";
$password="";
$dbName="restavracija";
$usertable="adress";
$adress=$_POST["adress"];
MYSQL_CONNECT($hostname,$username,$password) OR DIE("Неможливо підключитись ");
MYSQL_SELECT_DB($dbName) or die("БД не існує");
$query="select * from $usertable where adress='$adress'";
$result=mysql_query($query);
if(mysql_numrows($result))
{
$query="delete from $usertable where adress='$adress'";
$result=MYSQL_QUERY($query);
print "Виконано!<br>";
} else { print "Введіть правильні дані!<br>";}
MYSQL_CLOSE();
print "<a href='../../main.php'>Назад в меню</a>";
?>
Висновок: На цій лабораторній роботі я навчився працювати з БД SQL засобами мови PHP.