Здесь необходимо создать
пакет программ по созданию простой базы данных(БД),ее дополнению, поиску
записи, удалению записи и ее редактированию. Пакет программ должен содержать
общее меню по выполняемым действиям в котором должен быть установлен счетчик
его посещения. Пакет программ должен оперировать с графическими объектами
(например, фотографии сотрудников). Текст программ должен быть написан
на языках HTML и php. Непосредственная работа с базой данных должна осуществляться
с помощью пакета СУБД MySQL. Сервер MySQL должен находиться на машине cel.tup
(там же где и Web-сервер Apache). Программы на php должны взаимодействовать
с сервером MySQL посредством включенных в php функций взаимодействия с
MySQL. После изучения представленных ниже текстов программ студент должен
разработать подобный пакет программ для БД, заданной преподавателем. Например,
БД может включать в себя поля:
1.Название изделия
2.Время выпуска
3.Краткая характеристика изделия
4.Фотография изделия
В качестве изделия могут рассматриваться
автомобили, самолеты, суда и др.
Каждый студент должен
иметь свой username в СУБД MySQL. Ниже рассмотрен пример создания пользователя
с username ismm25.
Создание пользователя ismm25 (Выполняет
преподаватель!):
> mysql -u root -p
Enter password:
Welcome to the 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;
Reading table information for completion
of table and column names
You can turn off this feature to get a
quicker startup with -A
Database changed
mysql> select * from user;
+-----------+-------+------------------+-------------+-------------+-----------+
| Host
| User | Password
| Select_priv | Insert_priv | Update_pri|
+-----------+-------+------------------+-------------+-------------+-----------+
| localhost | root
| 3aa3ee1e1d77f653 | Y
| Y | Y
|
| cel
| root |
| Y | Y
| Y |
| localhost |
|
| N | N
| N |
| cel
| |
| N | N
| N |
| ikc1.tup | alex
| 75cbfbdb376c43a9 | N
| N | N
|
| ikc1.tup | admin
| 12ad110a21defd86 | Y
| Y | Y
|
+-----------+-------+------------------+-------------+-------------+-----------+
6 rows in set (0.00 sec)
mysql>insert into user values ('cel.tup','ismm25',password('ismm25'),
-> '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 | Y
| Y | Y
|
| cel
| root |
| Y | Y
| Y |
| localhost |
|
| N | N
| N |
| cel
| |
| N | N
| N |
| ikc1.tup | alex
| 75cbfbdb376c43a9 | N
| N | N
|
| ikc1.tup | admin
| 12ad110a21defd86 | Y
| Y | Y
|
| cel.tup |
ismm25 | 7f6731414c9c046a | Y
| Y | Y
|
+-----------+--------+------------------+-------------+-------------+----------+
7 rows in set (0.00 sec)
mysql> quit
Bye
>
Перегружаем сервер MySQL:
> mysqladmin -u root -p reload
Enter password:
>
----------------------------------------------------------------------------------
Далее студент должен
создать свою базу данных и таблицу в ней с которыми будет работать созданный
пакет программ на php. Для их создания необходимо подключиться к машине
cel.tup через telnet (telnet cel.tup).
Пример создания базы данных ismm25 и таблицы
в ней с именем tabismm25 (Выполняет студент!):
> mysql -u ismm25 -p -h 'cel.tup'
Enter password:
Welcome to the 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 ismm25;
Query OK, 1 row affected (0.02 sec)
mysql> use ismm25;
Database changed
mysql> create table tabismm25(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 ismm25 -h 'cel.tup' -p
password 'ismm25'
Enter password:
>
Затем перегрузить MySQL (введя новый пароль):
> mysqladmin -u ismm25 -h 'cel.tup' -p
reload
Enter password:
>
Приведенные ниже программы
расположены в каталоге ../public_html/php/
Фотографии - ../public_html/php/pics/
index.html
<html>
<head>
<title>Menu</title>
</head>
<body>
<b>
<a href="../php/form1.html">
1.Добавить запись в базу данных </a><br>
<a href="../php/form2.html">
2.Найти запись по Ф.И.О. </a><br>
<a href="../php/form3.html">
3.Удалить запись </a><br>
<a 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>
Тексты программ на языке Perl:
form1.php
<?
/* Определяем значения
переменным */
$hostname="cel.tup";
$username="ismm25";
$password="ismm25";
/* Имя базы данных
*/
$dbName="ismm25";
/* Таблица MySQL
*/
$usertable="tabismm25";
/* Создать соединение
*/
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="cel.tup";
$username="ismm25";
$password="ismm25";
$dbName="ismm25";
$usertable="tabismm25";
mysql_connect($hostname,$username,$password)
or die("No connect");
mysql_select_db("$dbName")
or die("No select DB");
/* Выбрать сотрудников,
имена которых начинаются на $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($result,$i,"phone");
$job=mysql_result($result,$i,"job");
$img=mysql_result($result,$i,"img");
/* Вывод найденных
значений */
print "<br><img
src='pics/$img' height=130><br>";
print "<u> Ф.И.О.:</u>
<br>";
print "$user_name
<br><br>";
print "<u> Телефон:
</u><br>";
print "$phone <br><br>";
print "<u> Характеристика:
</u><br>";
print "$job <br>";
$i++;
print "<hr>";
}
}
print "<a href='../php/'>Назад
в меню</a>";
?>
form3.php
<?php
$hostname="cel.tup";
$username="ismm25";
$password="ismm25";
$dbName="ismm25";
$usertable="tabismm25";
mysql_connect($hostname,$username,$password)
or die("No connect");
mysql_select_db("$dbName")
or die("No select DB");
/* Удаление записи
для поля 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="cel.tup";
$username="ismm25";
$password="ismm25";
$dbName="ismm25";
$usertable="tabismm25";
mysql_connect($hostname,$username,$password)
or die("No connect");
mysql_select_db("$dbName")
or die("No select DB");
/* Выбор записи
по полю 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($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="cel.tup";
$username="ismm25";
$password="ismm25";
/* Имя базы данных
*/
$dbName="ismm25";
/* Таблица MySQL
*/
$usertable="tabismm25";
/* Создать соединение
*/
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>";
?>
Для просмотра,
как работает рассмотренный комплект программ, нажми
сюда.