Лабораторная работа №3
Разработка приложений БД на cервере MySQL с помощью PHP
Цель работы: изучить настройки сервера БД MySQL, возможности подключения к БД с помощью PHP
Краткие теоретические сведения
MySQL – это реляционная система управления базами данных. То есть данные в ее базах хранятся в виде логически связанных между собой таблиц, доступ к которым осуществляется с помощью языка запросов SQL. MySQL – свободно распространяемая система Кроме того, это достаточно быстрая, надежная и простая в использовании СУБД, вполне подходящая для не слишком глобальных проектов.
Работать с MySQL можно в текстовом режиме (рис. 3.1), и в графическом (рис. 3.2). Существует очень популярный визуальный интерфейс (написанный на PHP) для работы с этой СУБД – называется PhpMyAdmin. Этот интерфейс позволяет значительно упростить работу с базами данных в MySQL.
В текстовом режиме работа с базой данных выглядит просто как ввод команд в командную строку, а результаты выборок возвращаются в виде своеобразных таблиц, поля в которых налезают друг на друга, если данные не помещаются на экран .
Рисунок 3.1 – Работа с MySQL в коммандной строке. Команда show databases — вывести все имеющиеся базы данных
PhpMyAdmin позволяет пользоваться всеми достоинствами браузера, включая прокрутку изображения, если оно не умещается на экран. Многие из базовых SQL-функций работы с данными в PhpMyAdmin сведены к интуитивно понятным интерфейсам и действиям, напоминающим переход по ссылкам в Internet.
Сервер MySQL очень распространен и часто используется в Веб–технологиях. На этом сервере базируются большинство сайтов и решений в Интернете.
По настройке сервера MySQL можно посмотреть здесь: http://www.netbeans.org/kb/docs/ide/install-and-configure-mysql-server_ru.html
Пример:
1 Для создания новой БД на сервере (http://localhost/denwer/) выбрать ссылку: phpMyAdmin - администрирование СУБД MySQL :
Рисунок 3.2 – Страница phpMyAdmin
2 Создать таблицу в БД, например для хранения информации о кофе (info_coffee)
Рисунок 3.3 – Создание таблицы
3 Создать набор полей, указать типы данных, размер текстовых полей. Если необходимо указать «auto_increment» для ключевого поле (предварительно его создав – primary key)
Рисунок 3.3 – Создание набора полей
Нажать «Сохранить»
4 Для добавления данных нажать «Вставить»:
Рисунок 3.4 – Созданная структура таблицы «info_coffee»
Рисунок 3.5 – Добавление записей в таблицу
Для просмотра всех записей нажать «Обзор»:
Рисунок 3.6 – Просмотр всех записей
Взаимодействие PHP и MySQL
Чтобы построить интерфейс для добавления информации в эту таблицу, нужно ее структуру (т.е. набор ее полей) отобразить в html-форму.
Разобьем эту задачу на следующие подзадачи:
- установка соединения с БД;
- выбор рабочей БД;
- получение списка полей таблицы;
- отображение полей в html-форму.
После этого данные, введенные в форму, нужно записать в базу данных. Рассмотрим все эти задачи по порядку.
Итак, первое, что нужно сделать, - это установить соединение с базой данных. Воспользуемся функцией mysql_connect:
ресурс mysql_connect ( [строка server
[, строка username [, строка password
[, логическое new_link
[, целое client_flags]]]]])
Данная функция устанавливает соединение с сервером MySQL и возвращает указатель на это соединение или FALSE в случае неудачи. Для отсутствующих параметров устанавливаются следующие значения по умолчанию:
server = 'localhost:3553' (если по умолчанию используется порт 80, то ничего указывать не нужно)
username = имя пользователя владельца процесса сервера (по умолчанию root)
password = пустой пароль
<?
$conn = mysql_connect("localhost", "root","")
or die("Невозможно установить соединение: ". mysql_error());
echo "Соединение установлено";
mysql_close($conn);
?>
Соединение с сервером закрывается при завершении исполнения скрипта, если оно до этого не было закрыто с помощью функции mysql_close().
После установки соединения нужно выбрать базу данных, с которой будем работать. Наши данные хранятся в базе данных coffee.В PHP для этого существует функция mysql_select_db.
Синтаксис mysql_select_db:
логическое mysql_select_db (строка database_name[, ресурс link_identifier])
Эта функция возвращает TRUE в случае успешного выбора базы данных и FALSE - в противном случае.
mysql_select_db("coffee");
Как получить список полей таблицы? В PHP есть своя команда - mysql_list_fields.
Синтаксис mysql_list_fields
ресурс mysql_list_fields ( строка database_name, строка table_name
[, ресурс link_identifier])
Эта функция возвращает список полей в таблице table_name в базе данных database_name. Результат работы этой функции – переменная типа ресурс. Это ссылка, которую можно использовать для получения информации о полях таблицы, включая их названия, типы и флаги.
Функция mysql_field_name возвращает имя поля, полученного в результате выполнения запроса. Функция mysql_field_len возвращает длину поля. Функция mysql_field_type возвращает тип поля, а функция mysql_field_flags возвращает список флагов поля, записанных через пробел. Типы поля могут быть int, real, string, blob и т.д. Флаги могут быть not_null, primary_key, unique_key, blob, auto_increment и т.д.
Синтаксис у всех этих команд одинаков:
строка mysql_field_name ( ресурс result, целое field_offset)
строка mysql_field_type ( ресурс result, целое field_offset)
строка mysql_field_flags (ресурс result, целое field_offset)
строка mysql_field_len ( ресурс result, целое field_offset)
Здесь result – это идентификатор результата запроса (например, запроса, отправленного функциями mysql_list_fields или mysql_query, а field_offset - порядковый номер поля в результате.
То, что возвращают функции типа mysql_list_fields или mysql_query, представляет собой таблицу, а точнее, указатель на нее. Чтобы получить из этой таблицы конкретные значения, нужно задействовать специальные функции, которые построчно читают эту таблицу. К таким функциям и относятся mysql_field_name и т.п. Чтобы перебрать все строки в таблице результата выполнения запроса, нужно знать число строк в этой таблице. Команда mysql_num_rows(ресурс result) возвращает число строк во множестве результатов result.
А теперь попробуем получить список полей таблицы info_coffee (коллекция экспонатов).
<?
$conn = mysql_connect("localhost","root","")
or die("Невозможно установить соединение: ". mysql_error());
echo "Соединение установлено";
mysql_select_db("info_coffee");
$list_f = mysql_list_fields ("coffee","info_coffee",$conn);
$n = mysql_num_fields($list_f);
for($i=0;$i<$n; $i++){
$type = mysql_field_type($list_f, $i);
$name_f = mysql_field_name($list_f,$i);
$len = mysql_field_len($list_f, $i);
$flags_str = mysql_field_flags (
$list_f, $i);
echo "<br>Имя поля: ". $name_f;
echo "<br>Тип поля: ". $type;
echo "<br>Длина поля: ". $len;
echo "<br>Строка флагов поля: ".
$flags_str . "<hr>";
}
?>
Создадим форму для наполнения БД:
<form action=insert.php method=post>
введите название <input type=text name=name_c> <br>
введите цену <input type=text name=price_c> <br>
выберите фирму <select name=firma_c>
<option> nescafe
<option> jacobs
<option> tchibo
</select>
<br><input type=submit name=ok value=insert_c>
</form>
Теперь нужно сделать самое главное – отправить данные из этой формы в нашу базу данных. Как вы уже знаете, для того чтобы записать данные в таблицу, используется команда INSERT языка SQL. Например:
mysql> INSERT INTO info_coffee
SET name='Черная карта арабика';
Возникает вопрос, как можно воспользоваться такой командой (или любой другой командой SQL) в PHP скрипте. Для этого существует функция mysql_query().
Синтаксис mysql_query:
ресурс mysql_query (строка query [, ресурс link_identifier])
mysql_query() посылает SQL-запрос активной базе данных MySQL сервера, который определяется с помощью указателя link_identifier (это ссылка на соединение с сервером MySQL). Если параметр link_identifier опущен, используется последнее открытое соединение. Если открытые соединения отсутствуют, функция пытается соединиться с СУБД, аналогично функции mysql_connect() без параметров. Результат запроса буферизируется.
Insert.php
<?php
$name=$_REQUEST["name_c"];
$price=$_REQUEST["price_c"];
$firma=$_REQUEST["firma_c"];
$db=mysql_connect(localhost,'root','');
mysql_select_db("Coffee");
if ($but=insert_c)
{$sql1="INSERT INTO name_coffee VALUES('','$name','$price','$firma')";
mysql_query($sql1);
}
print "Кофе $name $firma добавлено";
?>
poisk.php
$a=$_REQUEST["price_c"];
{print " кофе по цене < $a грн: <br>"; }
$conn=mysql_connect(localhost,'root','');
mysql_select_db("Coffee");
$sql="SELECT * FROM info_coffee where price=".$a;
$result=mysql_query($sql);
for ($i=1; $i<=mysql_num_rows($result);$i++)
{$row=mysql_fetch_object($result);
print "Кофе $row->name $row->firma стоит $row->price грн. <br>";
}
Предварительно была создана форма для ввода цены кофе, которое необходимо найти:
<form action=poisk.php method=post>
введите цену <input type=text name=price_c> <br>
<input type=submit name=ok value=search>
</form>
Примечание. БД и таблицы хранятся на сервере по следующему пути:
Webserver\usr\local\mysql5\data\coffee
Задание к работе:
1 Ознакомиться с теоретическим материалом.
2 Создать БД согласно варианту (предметную область взять из табл. 2)
3 Разработать структуру таблиц
4 Создать скрипт на php для просмотра записей таблиц, поиска по критерию, добавления информации, удаления записей и изменения информации
5 Оформить отчет согласно требованиям.
Таблица 2 – Индивидуальное задание
1 |
Каталог напитков |
2 |
Номенклатура оборудования |
3 |
Каталог медицинских препаратов |
4 |
Каталог аудио дисков |
5 |
Каталог продуктов питания |
6 |
Каталог автомобилей |
7 |
Каталог бытовых приборов |
8 |
Каталог осветительных приборов |
9 |
Каталог оборудования на складе |
10 |
Каталог компьютерного оборудования: процессоры и материнские платы |
Отчет должен содержать:
1 Название и цель работы.
2 Ход работы с детальным описанием выполненных действий с рисунками, листингом кода.
3 Экранные формы браузера с загруженными страницами.
4 Выводы о проделанной работе.
Вопросы для подготовки к защите работы:
1 Взаимодействия PHP и СУБД MySql
2 Как происходит установка соединения с базой данных
3 Функциям отправки запросов и обработке ответов
4 Обработка ошибок при подключении к БД
Скачано с www.znanio.ru
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.