Разработка систем управления базой данных MySQL

Министерство образования Российской Федерации

Выксунский металлургический техникум им.А.А.Козерадского

























Разработка систем управления базой данных MySQL

Отчет по практике

ОП 230103.012.002.00





Руководитель проекта

Чалышев В.В.

Проект разработал

Короткова Ю.С.

Проверил

Пантелеев С.В.





г.Выкса

2007




Содержание



Аннотация

Введение

1 Анализ технического задания

2 Разработка алгоритма

3 Разработка программы

4 Блок-схема

5 Руководство по установке и использованию

Заключение

Список используемой литературы




Аннотация



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




Введение



PHP – язык написания сценариев, внедренный в HTML. Многое  из синтаксиса заимствовано из С, Java, Perl, с добавлением специфичных для PHP возможностей. Задача языка состоит в том, чтобы дать возможность Web-разработчикам легко и быстро создавать динамично изменяемые html-страницы. 

Написание Web-страницы, работающей с базой данных, невероятно проста. В настоящее время поддерживаются следующие базы данных: Oracle, Adabas D, Sybase, FilePro, mSQL, Velocis, MySQL, Informix, Solid, dBase, ODBC, Unix dbm, PostgreSQL.

В последнее время у разработчиков наиболее популярна СУБД MySQL. 

MySQL – компактный многопоточный сервер баз данных. MySQL характеризуется большой скоростью, устойчивостью и легкостью в использовании.

MySQL является идеальным решением для малых и средних приложений. Исходники сервера компилируются на множестве платформ. Наиболее полно возможности сервера проявляются на Unix-серверах, где есть поддержка многопоточности, что дает значительный прирост производительности. 

MySQL действительно очень быстрый сервер, но для достижения этого разработчикам пришлось пожертвовать некоторыми требованиями к реляционным СУБД. 

В своей работе я отразила, как управлять базой данных MySQL через язык программирования PHP 4.




1 Анализ технического задания



Тема проекта «Разработка систем управления базой данных MySQL» подразумевает под собой создание скрипта на языке программирования php4, где управление базой данных  организовано по схеме "ничего лишнего", поэтому и отсутствуют некоторые функции, которыми оснащены база  данных MySQL. 

Суть программы будет заключаться в следующем: пользователь создает некую базу данных, и при использовании скрипта он может выполнять следующие функции:

просмотр созданной базы данных;

изменение значения в строках таблицы; 

добавление строки в уже существующую таблицу, либо добавление новой таблицы;

удаление таблицы;

Также в скрипт включен файл конфигурации, где можно ввести уникальное имя пользователя и защитить базу данных паролем.

Для реализации данного проекта применяется язык программирования PHP (версии 4.0).



2 Разработка алгоритма



На данном этапе разработано несколько алгоритмов, по которым можно решить эту задачу.

Разработать систему управления базой данных таким образом, чтобы она выполняла 4 основные функции: просмотр, изменение данных в таблицах, добавление таблиц и их удаление.

Второй вариант является модификацией первого. К уже существующей системе добавить защиту базы данных, т.е. ввести пароль для каждого пользователя.

Третий вариант является доработкой второго. Если пользователь захочет распечатать базу данных, то возможен вывод документа на печать. 

Был выбран третий вариант реализации программы, потому что он более полный и обладает всеми важными функциями управления базой данных. Он также является наиболее практичным и работоспособным.



3 Разработка программы



В программе используется 6 файлов.

Файл index.html – начальный файл, он используется при запуске.

<?php

include('inc/config.php');

include('inc/function.php');

include('inc/header.php');

print "<div align=\"center\" class=\"tabtop\">Пример системы управления базой данных</div>";

list_tab('connect');

if(@$action == "connect"){

$link = mysql_pconnect($mysql_host, $mysql_login, $mysql_password) or die ("Не могу подключиться к MySQL");

mysql_select_db ("$database") or die ("$database не найдена!");

$result = mysql_query ("SELECT * FROM `$db`") or die ("Ошибка запроса");

if ($myrow = mysql_fetch_array($result))

{

echo "<table bgcolor=\"#F3E7CD\" ><tr class=\"tabletext\"><td>";

 echo "<table width=\"100%\" rules=\"all\" align=\"center\" bgcolor=\"#ffffff\" bolder=\"4\">\n";

echo "<tr>

<td> Н а з в а н и е </td>

<td> И з д а т е л ь с т в о </td>

<td> Г о д   в ы п у с к а </td>

</tr>\n"; 

 do

 {

 print "<tr bgcolor=\"#111111\">

<td  align=\"CENTER\" class=\"taband\">$myrow[nazvanie]</td>

<td align=\"CENTER\" class=\"taband\">$myrow[izdatelstvo]</td> 

<td align=\"CENTER\" class=\"taband\">$myrow[god_vipuska]</td></tr>

 "; }

 while ($myrow = mysql_fetch_array($result));

 echo "</table>\n";

 echo "</td></tr></table>";}

print "<a target=\"blank\" href=\"/services/print.php?db=$db\">Версия для печати</a>";

}?>

Файл admin.php-в этом файле производится непосредственно обработка информации из базы данных, выполнение всех основных команд управления базой данных.

<?php

include('inc/config.php');

include('inc/function.php');

include('inc/header.php');

switch (@$actions) {

   case ("add"):

 print "<div align=\"center\" class=\"tabtop\">Добавить строку в таблицу</div>";

   list_tab('add');

print "<hr>";

print "<div align=\"center\" class=\"tabtop\">Создать новую таблицу</div>";

print "<form action=\"?actions=add&s=2\" method=\"post\">

<table>

<tr   class=\"tabletext\"><td>Имя таблицы (соответственно имени группы):</td><td><input type=\"text\" name=\"tablename\"></td></tr>

<tr><td colspan=\"2\" align=\"CENTER\"><input type=\"submit\" value=\"Создать таблицу\"></td></tr>

</table>

</form>";

if (isset($tablename) && @$s==2) {

$link = mysql_pconnect($mysql_host, $mysql_login, $mysql_password) or die ("Не могу подключиться к MySQL");

mysql_select_db ("$database") or die ("$database не найдена!");

 $sql = 'CREATE TABLE `.$tablename.` ('

. ' `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, '

. ' `nazvanie` VARCHAR(100) NOT NULL, '

. ' `izdatelstvo` VARCHAR(100) NOT NULL, '

. ' `god_vipuska` VARCHAR(100) NOT NULL,'

. ' PRIMARY KEY (`id`)'

. ' )';

$result = mysql_query($sql);

 print "<meta http-equiv=\"refresh\" content=\"2 url=?action=add&db=$tablename\">";

}

if (isset($snazvanie) && @$s==1) {

$link = mysql_pconnect($mysql_host, $mysql_login, $mysql_password) or die ("Не могу подключиться к MySQL");

mysql_select_db ("$database") or die ("$database не найдена!");

$sql = "INSERT INTO `$db` (nazvanie,izdatelstvo,god_vipuska) VALUES

('$snazvanie','$sizdatelstvo','$sgod_vipuska')";

$result = mysql_query($sql);

} 

    break;  

case ("edit"):

   print "<div align=\"center\" class=\"tabtop\">Изменить данные таблицы</div>";

list_tab('update');

    break;

   case ("del"):

   print "<div align=\"center\" class=\"tabtop\">Удалить таблицу</div>";

 list_tab('delete');

    break;

   case ("config"):

   print "<div align=\"center\" class=\"tabtop\">Изменить параметры скрипта</div>";

print "

<form action=\"\" method=\"post\">

<table align=\"CENTER\" width=\"640\">

<tr class=\"tabletext\"><td>Имя пользователя базы данных:</td>

<td><input type=\"text\" name=\"new_mysql_login\" value=\"$mysql_login\"></td></tr>

<tr class=\"tabletext\"><td>Пароль для доступа к базе данных (по умолчанию пустой):</td>

<td><input type=\"text\" name=\"new_mysql_password\" value=\"$mysql_password\"></td></tr>

<tr class=\"tabletext\"><td>Имя базы данных:</td>

<td><input type=\"text\" name=\"new_database\" value=\"$database\"></td></tr>

<tr class=\"tabletext\"><td colspan=\"2\" align=\"CENTER\"><input type=\"submit\" value=\"Изменить\"></td></tr>

</table>

</form>";

if(isset($new_mysql_host) && isset($new_mysql_login) && isset($database))

{

$config = "<?php

\$mysql_host = \"".$new_mysql_host."\";

\n

\$mysql_login = \"".$new_mysql_login."\";

\n

\$mysql_password = \"".$new_mysql_password."\";

\n

\$database = \"".$new_database."\";

?>";

$fp = fopen ("inc/config.php", "w+");

 fwrite ($fp, $config);

 fclose ($fp);

print "<meta http-equiv=\"refresh\" content=\"0 url=admin.php?actions=config\">";

} 

 break;

} 

//Добавление таблицы

if (@$action == 'add' && isset($db)) {

print "<form action=\"?actions=add&s=1\" method=\"post\">

<table>

<tr><td colspan=\"2\" class=\"tabtop\" align=\"CENTER\"><b>Добавление строки в 

таблицу $db</b></td></tr>

<tr  class=\"tabletext\"><td> Название книги: </td><td><input type=\"text\" 

name=\"snazvanie\"> </tr>

<tr  class=\"tabletext\"><td> Издательство: </td><td><input type=\"text\" name=\"sizdatelstvo\"> </tr>

<tr  class=\"tabletext\"><td> Год выпуска: </td><td><input type=\"text\" name=\"sgod_vipuska\"> </tr>

<tr  class=\"tabletext\"><td  colspan=\"2\" align=\"CENTER\"><input type=\"submit\" value=\"Добавить\"></td></tr></table>

<input type=\"hidden\" name=\"db\" value=\"$db\">

</form>"; }

//Удаление таблицы

if(@$action == "delete")

{

$link = mysql_pconnect($mysql_host, $mysql_login, $mysql_password) or die ("Не могу подключиться к MySQL");

 mysql_select_db ("$database") or die ("$database не найдена!");

 @$result = mysql_query ("DELETE FROM `$db`");

 if ($result == TRUE){

 $sql = mysql_query ("DROP TABLE `$db`");

 }

print "<meta http-equiv=\"refresh\" content=\"0 url=admin.php?actions=del\">";

}

//Обновление данных в таблице

if(@$action == "update"){

$link = mysql_pconnect($mysql_host, $mysql_login, $mysql_password) or die ("Не могу подключиться к MySQL");

mysql_select_db ("$database") or die ("$database не найдена!");

$result = mysql_query("SELECT * FROM `$db`") or die ("Ошибка запроса!!!");

$myrow = mysql_fetch_array($result);

echo "<div align=\"center\" class=\"tabtop\">Внести изменения в таблицу $db</div>";

echo "<table ><tr class=\"tabletext\"><td>";

 echo "<table border=\"0\" cellspacing=\"1\">\n <form action=\"?submit=Submit&db=$db\" method=\"POST\">";

$i=0;

do

{

 print "

 <tr>

 <td>$myrow[0].</td><td>

<input type=\"text\"  size=\"14\"  name=\"nazvanie[$i]\" value=\"$myrow[nazvanie]\"></td>

 <input type=\"hidden\" name=\"id\" value=\"$myrow[0]\"> <td align=\"CENTER\">

<input type=\"text\" size=\"2\" name=\"izdatelstvo[$i]\" value=\"$myrow[izdatelstvo]\"></td>

<td align=\"CENTER\"><input type=\"text\" size=\"3\" name=\"god_vipuska[$i]\" value=\"$myrow[god_vipuska]\"></td></tr> ";

 $i++;} 

while ($myrow = mysql_fetch_array($result));

 echo "

<tr><td colspan=\"12\" align=\"center\"> <input type=\"submit\" name=\"submit\" value=\"Обновить\"></td></tr></form></table>\n";

 echo "</td></tr></table>";

}

 if (@$submit == "Обновить"){

 $link = mysql_pconnect($mysql_host, $mysql_login, $mysql_password) or die ("Не могу подключиться к MySQL");

mysql_select_db ("$database") or die ("$database не найдена!");

$ids=$id;

do {

    $id--;

  $result = mysql_query("UPDATE `$db` SET nazvanie='$nazvanie[$id]', izdatelstvo='$izdatelstvo[$id]', god_vipuska='$god_vipuska[$id]' WHERE id=$ids");

    $ids--;

} while($id>=1);

print "<meta http-equiv=\"refresh\" content=\"0 url=admin.php?action=update&db=$db\">";

 }

include('inc/footer.php');

?>

Файл konfig.php-задает основные параметры базы данных: путь к базе данных, имя пользователя базы, пароль для доступа к базе данных, и имя самой базы данных.

<?php

$mysql_host = "localhost";

$mysql_login = "root";

$mysql_password = "";

$database = "knigi";?>

Файл function.php-заменяет английский алфавит, используемый в базе данных, на русский методом замены.

<?

function authorization($username, $pass){

include("inc/config.php");

$out = FALSE;

if(strtolower($username) == strtolower($adminlogin) && $pass == $adminpass)

{

$out = TRUE;

}

return $out;

}

function list_tab($act) {

include("inc/config.php");

function replace_ru_en($tab_rows){

$tab_rows = str_replace("a", "А  ", $tab_rows);

$tab_rows = str_replace("b", "Б ", $tab_rows);

$tab_rows = str_replace("с", "Ц ", $tab_rows);

$tab_rows = str_replace("d", "Д ", $tab_rows);

$tab_rows = str_replace("e", "Е ", $tab_rows);

$tab_rows = str_replace("f", "Ф ", $tab_rows);

$tab_rows = str_replace("g", "Г ", $tab_rows);

$tab_rows = str_replace("h", "Х ", $tab_rows);

$tab_rows = str_replace("i", "И ", $tab_rows);

$tab_rows = str_replace("j", "Ж ", $tab_rows);

$tab_rows = str_replace("k", "К ", $tab_rows);

$tab_rows = str_replace("l", "Л ", $tab_rows);

$tab_rows = str_replace("m", "М ", $tab_rows);

$tab_rows = str_replace("n", "Н ", $tab_rows);

$tab_rows = str_replace("o", "О ", $tab_rows);

$tab_rows = str_replace("p", "П ", $tab_rows);

$tab_rows = str_replace("q", "Ш", $tab_rows);

$tab_rows = str_replace("r", "Р ", $tab_rows);

$tab_rows = str_replace("s", "С ", $tab_rows);

$tab_rows = str_replace("t", "Т ", $tab_rows);

$tab_rows = str_replace("u", "У ", $tab_rows);

$tab_rows = str_replace("v", "В ", $tab_rows);

$tab_rows = str_replace("w", "В ", $tab_rows);

$tab_rows = str_replace("x", "Х ", $tab_rows);

$tab_rows = str_replace("y", "У ", $tab_rows);

$tab_rows = str_replace("z", "З ", $tab_rows);

return $tab_rows;

}

$link = mysql_pconnect($mysql_host, $mysql_login, $mysql_password) or die ("Не могу подключиться к MySQL");

 mysql_select_db ("$database") or die ("$database не найдена!");

 $result = mysql_list_tables("$database", $link); print "

 <p align=\"center\"> <form action=\"?\" method=\"get\">

 <input type=\"hidden\" name=\"action\" value=\"$act\">

 <select name=\"db\">\n";

 while($tab_rows = mysql_fetch_row($result)) {

 print "<option value=\"$tab_rows[0]\">".replace_ru_en($tab_rows[0])."</option>\n";

 }

 print "</select>

<input type=\"submit\" value=\"Пошел\"></form></p>";

}

?>

Файл hearder.php – внешний вид и оформление страниц.

 <?

@print "

<html>

<head>

</script>

<title>Разработка системы управления базой данных</title>

</head>

<link href=\"style.css\" rel=\"stylesheet\" type=\"text/css\">

<body bgcolor=\"recbg.jpeg\" topmargin=\"10\" marginwidth=\"0\" marginheight=\"10\">

<table width=\"100%\" cellspacing=\"1\" cellpadding=\"0\"  align=\"CENTER\">

<tr><td bgcolor=\"E0FFFF\">

<table width=\"100%\" cellspacing=\"5\" cellpadding=\"0\">

<tr><td>

<table width=\"100%\"  cellspacing=\"0\" cellpadding=\"0\">

<tr>

<td{cursor: n-resize;}>

<table cellspacing=\"0\" cellpadding=\"0\">

<tr><td>

<table cellspacing=\"0\" cellpadding=\"5\" >

<tr>

<a href=\"/index.php\" class=\"blink\"> Просмотр </a><br><br>

<a href=\"/admin.php?actions=add\" class=\"blink\"> Добавить</a><br><br>

<a href=\"/admin.php?actions=edit\" class=\"blink\"> Изменить</a><br><br>

 <a href=\"/admin.php?actions=del\" class=\"blink\"> Удалить</a><br><br>

<a href=\"/admin.php?actions=config\" class=\"blink\"> Конфиг</a><br><br>

</tr>

<td></td>

 </table>

</td>

<td align=\"right\"  class=\"tabletext\">

</td>

</tr>

</table>

</td>

</tr>

<tr><td>

<table width=\"100%\" cellspacing=\"0\" cellpadding=\"5\">

<tr class=\"intable\">

<td bgcolor=\"#F3E7CD\" align=\"center\">

";

?>

Файл print.php- выводит базу данных на печать.

<?php

include("../inc/config.php");

include("../inc/function.php");

Error_Reporting(E_ALL & ~E_NOTICE);

print "



</head>

<body onload=\"window.print()\">

";

$link = mysql_pconnect($mysql_host, $mysql_login, $mysql_password) or die ("Не могу подключиться к MySQL");

mysql_select_db ("$database") or die ("$database не найдена!");

@$result = mysql_query ("SELECT * FROM `$db`") or die ("Ошибка запроса");

if ($myrow = mysql_fetch_array($result))

{

echo "<table bgcolor=\"#000000\" ><tr><td>";

 echo "<table border=\"1\" cellspacing=\"1\">\n";

 echo "<tr bgcolor=\"#99ccff\" align=\"CENTER\" class=\"tabletext\">

<td> Название </td>

<td> Издательство </td>

<td> Год выпуска </td></tr>\n";

 do

 {

 print "<tr class=\"tabletext\" bgcolor=\"#ffffff\">

<td>$myrow[nazvanie]</td> 

<td align=\"CENTER\">$myrow[izdatelstvo]</td> 

<td align=\"CENTER\">$myrow[god_vipuska]</td></tr>

 ";

 }

 while ($myrow = mysql_fetch_array($result));

 echo "</table>\n";

 echo "</td></tr></table>";

}

print "<input type=\"submit\" value=\"Печать\" onclick=\"window.print()\">";

 mysql_close($link);

print "

</body>

</html>";

 ?>




4 Блок-схема





начало

Выбор интересующей операции

просмотр

добавить

изменить

удалить

конфигурация

Вызов обработчика выбранной операции

конец

Вывод на экран браузера базы данных и операций, которыми можно управлять базой данных

Выбор интересующего блока из базы данных




Выбор интересующей таблицы

начало

Удаление таблицы из базы данных

конец

Удаление таблицы

Изменение данных

Обновление данных

конец

Вывод ее на экран в виде текстовых полей

начало

Изменение данных в таблице

Выбор интересующей таблицы



5 Руководство по установке и использованию



Для того чтобы данная программа работала у Вас на компьютере необходимо установить серверное программное обеспечение (например, Денвер). Дальше все по пунктам.

Создаем каталог и  даем ему имя (т.е. папку в папке home)

В каталоге создаем  папку www

Запускаем Денвер 

Производим проверку базы данных MySQL. 

Открываем браузер (в нем прописываем домашний URL.  Домашний URL такой: http://имя своего каталога/)

Заключение



Данный проект был реализован на языке программирования PHP, который адаптирован под Интернет. Этот проект может быть использован для встраивания в сайт. Назначение его это хранение информации в одном месте, а также упорядочивание данных одной тематики.




Список используемых источников



Учебник php - 2002г.

Самоучитель по PHP.

Учебник PHP4-2004г.