Цель работы: формирование умений применение PHP для доступа к базам данных, и формирование умений работы с MySQL.

Литература

Поясняющая информация

СУБД MySQL и программа phpMyAdmin

MySQL - это реляционная база данных (официальный сервер - www.mysql.com ).

Некоторые достоинства:

  • Реляционная.

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

  • Работает по технологии "Клиент-сервер"

  • Не требовательна к ресурсам

  • • Бесплатная (под POSIX-системы для некоммерческого использования, для остальных - платная)

  • Поддерживает язык SQL (хотя и не все)

  • Распространенная

  • Имеется множество готовых приложений, работающих с MySQL

phpMyAdmin - программа, полностью написанная на PHP, для администрирования сервера MySQl.

Некоторые возможности:

  • Создание, редактирование, удаление баз данных

  • Создание, редактирование, удаление таблиц баз данных

  • Создание, редактирование, удаление пользователей

  • Создание, редактирование, удаление записей в базах данных

Работа с базами данных с помощью PHP

Одним из ценных качеств языка PHP это наличие интерфейсов к большому количеству систем управления баз данных. Это Abadas D, dBase, Empress, FilePro, Informix, Interbase, mSQL, MySQL, Oracle, PostGreSQL, Solid, Sybase, Velocis, Unix dbm, и другие. Хотя в примерах будем использовать интерфейс к MySQL. Интерфейсы доступа к данным других СУБД выглядят аналогично.

Примеры исходников на PHP:

Рассмотрим примеры скриптов для добавления, удаления, редактирования и поиска данных в базе данных со следующими полями:

- Имя - user_name

- телефон - phone

- фотография - img (имя файла, который находится в каталоге foto/)


Скрипт обработки загружаемых данных.

Не забудьте, что переменные посланные методом GET, сначала нужно получить из массива $_GET

1
2
3
4
<?php
$stud=$_GET['student'];
$name=$_GET['username'];
php>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
<?php 
/* Определяем значения переменным */ 
$hostname="localhost"; 
$username="Ваш_логин"; 
$password="Ваш_пароль"; 
/* Имя базы данных */ 
$dbName="Имя_вашей_базы_данных"; 
/* Имя таблицы */ 
$usertable="Имя_таблицы"; 
/* Создать соединение с MySql*/ 
MYSQL_CONNECT($hostname,$username,$password) OR DIE("Не могу подсоединиться"); 
/* Выбор БД */ 
MYSQL_SELECT_DB($dbName) or die("Не могу выбрать БД"); 
/* Введение информации в БД */ 
$query="INSERT INTO $usertable VALUES ('$user_name','$phone','$img')"; 
$result=MYSQL_QUERY($query); 
/* Закрыть соединение */ 
MYSQL_CLOSE(); 
print "Запись введена в БД! <br>"; 
?> 


Скрипт обработки поискового запроса.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php 
$hostname="localhost"; 
$username="Ваш_логин"; 
$password="Ваш_пароль"; 
$dbName="Имя_вашей_базы_данных"; 
$usertable="Имя_таблицы"; 
/* Создать соединение с MySql*/ 
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, img для i-й 
строки */ 
$user_name=mysql_result($result,$i,"user_name"); 
$phone=mysql_result($result,$i,"phone"); 
$img=mysql_result($result,$i,"img"); 
/* Вывод найденных значений */ 
print "<br><img src='foto/$img' height=130><br>"; 
print "<u> Имя:</u> <br>"; 
print "$user_name <br><br>"; 
print "<u> Телефон: </u><br>"; 
print "$phone <br><br>"; 
$i++; 
print "<hr>"; 
} 
} 
?> 


  

Скрипт для удаления данных.

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php 
$hostname="localhost"; 
$username="Ваш_логин"; 
$password="Ваш_пароль"; 
$dbName="Имя_вашей_базы_данных"; 
$usertable="Имя_таблицы"; 
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>"; 
?> 


 
Скрипт редактирования данных.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php 
$hostname="localhost"; 
$username="Ваш_логин"; 
$password="Ваш_пароль"; 
$dbName="Имя_вашей_базы_данных"; 
$usertable="Имя_таблицы"; 
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>"; 
} 
else 
{ 
/* Если запись выбрана из базы данных, вывести все ее поля в форму для 
редактирования и удалить ее */ 
$phone=mysql_result($result,0,"phone"); 
$img=mysql_result($result,0,"img"); 
print "<img src='foto/$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>Введите имя фото лат.буквами:</b>"; 
print "<br><input name='img' value='$img' size=20>"; 
print "<br><br><input type='submit' value='Зарегистрировать'>"; 
print "</form>"; 
} 
?> 



Скрипт для загрузки отредактированых данных.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php 
hostname="localhost"; 
$username="Ваш_логин"; 
$password="Ваш_пароль"; 
$dbName="Имя_вашей_базы_данных"; 
$usertable="Имя_таблицы"; 
/* Создать соединение */ 
MYSQL_CONNECT($hostname,$username,$password) OR DIE("Не могу подсоединиться"); 
/* Выбор БД */ 
MYSQL_SELECT_DB($dbName) or die("Не могу выбрать БД"); 
/* Введение информации в БД */ 
$query="INSERT INTO $usertable VALUES ('$user_name','$phone',''$img')"; 
$result=MYSQL_QUERY($query); 
/* Закрыть соединение */ 
MYSQL_CLOSE(); 
print "Запись введена в БД! <br>"; 
?>

Обработка множественного выбора

Форма.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<body>
<form action="reg.php" method="GET">
<div>
Имя: <input type="txt" name="user" />
<br/>
Город: <select name="city_id[]" multiple> <!--имя массива-->
<option value="1">Казань</option>
<option value="2">Москва</option>
<option value="3">Уфа</option>
<option value="4">Перьм</option>
<option value="5">Самара</option>
</select>
</div>
<input type="submit" name="Submit" value="Submit" />
</form>
</body>
 

Обработка.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$city = $_GET['city_id'];
$limit = count($city); // получить размер массива
 
for ($i=0; $i<$limit; $i++) { // перебираем массив
 
    if(mysql_query("INSERT INTO table city_id VALUES ('$city[$i]')")) {
    echo "$i добавлен - $city[$i]<br/>";
    } else {
    echo "$i error  - $city[$i]<br/>";
    }
}
 
?>
 

Практические задания

Задание 1

  1. Зайдите на сервер в программу phpMyAdmin по адресу http://ipm.kstu.ru/mysql/. Создайте базу данных (название БД должно начинаться с вашего login'а, например - vasy-catalog).

  2. Создайте таблицу в этой БД со следующими полями (количество символов выставьте на свое усмотрение):
    - Имя (индексируемое)
    - Фамилия (уникальное)
    - Отчество (индексируемое)
    - e-mail (индексируемое)
    - телефон (индексируемое)
    - город (индексируемое)
    - страна (индексируемое)
    - фотография

  3. Попробуйте загрузить, удалить и отредактировать данные.

Задание 2

  1. Создайте форму для добавления записей в эту базу данных (должны присутствовать все поля). Создайте скрипт обработки этого запроса.

  2. Создайте форму поиска к этой базе данных (должно присутствовать только поле "Фамилия"). Создайте скрипт обработки этого запроса.

  3. Создайте форму запроса поиска к этой базе данных, для поиска записей которые необходимо редактировать (должны присутствовать все поля). Создайте скрипт обработки этого запроса.

  4. Создайте форму запроса поиска к этой базе данных, для поиска записей которые необходимо удалить (должно присутствовать только поле "Фамилия"). Создайте скрипт обработки этого запроса.

  5. Проверьте работоспособность на сервере.

  6. Сделайте ссылки на первой странице.

К сдаче лабораторной предоставляются: работающие страницы на сервере.

Последнее изменение: вторник, 2 апреля 2013, 16:44