Лабораторная работа 11 - Работа с базами данных с помощью PHP. СУБД MySQL.( 10 баллов)
Цель работы: формирование умений применение 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
-
Зайдите на сервер в программу phpMyAdmin по адресу http://ipm.kstu.ru/mysql/. Создайте базу данных (название БД должно начинаться с вашего login'а, например - vasy-catalog).
-
Создайте таблицу в этой БД со следующими полями (количество символов выставьте на свое усмотрение):
- Имя (индексируемое)
- Фамилия (уникальное)
- Отчество (индексируемое)
- e-mail (индексируемое)
- телефон (индексируемое)
- город (индексируемое)
- страна (индексируемое)
- фотография -
Попробуйте загрузить, удалить и отредактировать данные.
Задание 2
-
Создайте форму для добавления записей в эту базу данных (должны присутствовать все поля). Создайте скрипт обработки этого запроса.
-
Создайте форму поиска к этой базе данных (должно присутствовать только поле "Фамилия"). Создайте скрипт обработки этого запроса.
-
Создайте форму запроса поиска к этой базе данных, для поиска записей которые необходимо редактировать (должны присутствовать все поля). Создайте скрипт обработки этого запроса.
-
Создайте форму запроса поиска к этой базе данных, для поиска записей которые необходимо удалить (должно присутствовать только поле "Фамилия"). Создайте скрипт обработки этого запроса.
-
Проверьте работоспособность на сервере.
-
Сделайте ссылки на первой странице.
К сдаче лабораторной предоставляются: работающие страницы на сервере.