- •Язык php
- •Динамические сайты
- •Преимущества обработки страниц на стороне сервера
- •Современные технологии обработки страниц на стороне сервера
- •Active Server Pages (asp)
- •Java Servlets и jsp
- •Контрольные вопросы
- •Возможности языкаPhp ОбработкаHtmLформ
- •ГенерированиеHtmLстраниц
- •Взаимодействие с субд
- •Поддержка большого количества библиотек
- •Контрольные вопросы
- •Создание динамических страниц Создание простейшегоPhp-скрипта
- •Рнр и код, выполняемый на стороне клиента
- •Взаимодействие с пользователем
- •Контрольные вопросы
- •Синтаксис языкаPhp Типы данных
- •Константы
- •Объявление и инициализация переменных
- •Преобразование типов
- •Арифметические операторы
- •Унарный оператор
- •Оператор конкатенации строк
- •Сокращенная запись для присвоениязначений переменным
- •Операторы сравнения
- •Условные операторы
- •Функции пользователя
- •Массивы
- •Работа с файлами
- •Контрольные вопросы
- •Рнр иMySql Обработка и хранение структурированных данных
- •Динамические сайты, использующие базу данных
- •Построение реляционной базы данных
- •Продавцы
- •Заказчики
- •SqLзапросы к реляционной базе данных
- •Insert into salespeople values(1001,'Иванов','Москва',0.12);
- •Insert into customers values(2001,'Белкин','Москва',100,1001);
- •Insert into orders values(3008,4723.00,'2002-10-05',2006,1001);
- •Особенности реализацииMySql
- •ВзаимодействиеPhp иMySql
- •Контрольные вопросы
- •Разработка системы "Прайс-лист"
- •Постановка задачи
- •Принципы функционирования программного комплекса
- •Разработка структуры базы данных
- •Проектирование системы администрирования
- •Проектирование генератора прайс-листа
- •Контрольные вопросы
Контрольные вопросы
Расскажите про способы хранения данных динамического сайта
Опишите принцип работы динамического сайта, использующего в качестве хранилища реляционную базу данных
Как храненится информация в реляционной базе данных
Какие возможности предоставляет пользователю структурированный язык запросов SQL
Расскажите об особенностях реализации СУБД MySQL
Как организовано взаимодействие PHP и MySQL
Разработка системы "Прайс-лист"
В данном разделе будет рассмотрен пример, иллюстрирующий процесс построения динамического сайта, позволяющего генерировать прайс-лист на основе информации, содержащейся в базе данных.
Постановка задачи
Требуется спроектировать систему, генерирующую прайс-лист на основе информации, содержащейся в базе данных. Необходимо предусмотреть возможность разделения товаров на различные группы (например "телевизры", "видеомагнитофоны" и.т.д) и отображения прайс-листа только для выбранной группы. Выбор отображаемой группы товаров осуществляется пользователем при помощи меню. В прайс-листе должна присутствовать следующая информация:
Название фирмы-изготовителя
Название модели
Стоимость в долларах США
Стоимость в рублях исходя из установленного курса
Для управления данными, на основании которых генерируется прайс-лист, необходимо создать систему администрирования. Система администрирования должна выполнять следующие функции:
Добавление новой группы товаров
Изменение названия группы товаров
Удаление группы товаров (вместе со всеми моделями, принадлежащими данной группе)
Добавление новой модели в выбранную группу
Изменение цены любой модели из любой группы товаров
Удаление любой модели из любой группы товаров
Изменение курса доллара США по отношению к рублю (информация о курсе должна храниться в отдельном файле)
Необходимо обеспечить проверку корректности введенных данных во избежании нарушения информационной целостности базы данных.
Принципы функционирования программного комплекса
Исходя из постановки задачи можно сделать вывод о том, что разрабатываемый программный комплекс будет состоять из двух автономных приложений, работающих с общей базой данных. На рисунке представлена схема функционирования программного комплекса:
Система администрирования позволяет оператору добавлять, изменять, и удалять информацию из базы данных. Управление базой данных осуществляется при помощи визуального интерфейса, что позволяет значительно снизить требования к квалификации оператора и существенно облегчить его работу.
Генератор прайс-листа выбирает из базы данных информацию о товарах в соответствии с запросом посетителя сайта, форматирует полученные данные и отображает их в виде таблицы. Выбор прайс-листа осуществляется при помощи меню, формируемого на основе списка групп товаров, зарегистрированных в базе данных.
Разработка структуры базы данных
Одним из важнейших этапов разработки программного обеспечения является определение внутренней структуры данных. В проектируемом программном комплексе для хранения данных предлагается использовать реляционную базу данных. Для определения структуры базы данных, необходимо проанализировать предметную область и формализовать типы объектов, описываемых в виде реляционных таблиц.
На основе поставленной задачи можно заключить, что в базе данных должны быть представлены два типа объектов: группы товаров и изделия, принадлежащие группам.
Объект "группа товаров" имеет следующие атрибуты: уникальный идентификатор и название группы.
Объект "изделия" характеризуется атрибутами: уникальный идентификатор изделия, идентификатор группы, название фирмы-изготовителя, название модели, стоимость в долларах США.
Следует заметить, что стоимость изделия в рублях не хранится в базе данных, а вычисляется при формировании прайс-листа на основе заданного курса. Данный подход уменьшает производительность системы, однако позволяет наглядно продемонстрировать процесс взаимодействия приложения с файлом данных.
В результате проектирования была спроектирована база данных, состоящая из двух таблиц.
Products | |
pid |
Идентификатор группы товаров |
description |
Название группы |
Models | |
mid |
Идентификатор изделия |
pid |
Идентификатор группы товаров |
firm |
Название фирмы-изготовителя |
model |
Название модели |
price |
Стоимость в долларах США |
На основании спроектированной модели данных можно реализовать скрипт на языке PHP, создающий базу данных и таблицы с заданной структурой. В данный скрипт так же следует включить блок инициализации файла, содержащего курс рубля доллара.
<?
mysql_connect("localhost","","");
echo mysql_error();
mysql_create_db("mybase");
echo mysql_error();
mysql_select_db("mybase");
echo mysql_error();
mysql_query("create table products(pid int not null primary key auto_increment, description varchar(50) not null)");
echo mysql_error();
mysql_query("create table models(mid int not null primary key auto_increment, pid int not null, firm varchar(50) not null, model varchar(50) not null, price float(10,2) not null)");
echo mysql_error();
$fp=fopen("usd","w");
fputs($fp,"32");
fclose($fp);
?>