Министерство образования
Российской Федерации НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ № ____
WEB - ПРОГРАММИРОВАНИЕ
Методические указания к лабораторным работам
для студентов III курса АВТФ
направления230100.62
«Информатика и вычислительная техника»
дневной формы обучения
НОВОСИБИРСК
2014
Составитель: А.В. Гунько, канд. техн. наук, доц.
Рецензент Ю.В. Новицкая, ст. преп. каф. ВТ Работа подготовлена на кафедре автоматики
© Новосибирский государственный технический университет, 2014 г.
ЛАБОРАТОРНАЯ РАБОТА № 1 MySQL. Проектирование и реализация базы данных.
Цель работы
Изучить команды монитора MySQL, освоить операции создания таблиц, выборки, вставки, изменения и удаления данных.
Краткие теоретические сведения
Технология реляционных баз данных предполагает структурирование данных в таблицах, приведенных к нормальной форме. При этом связь между таблицами осуществляется с помощью ключевых полей. Структура таблиц с указанием типов данных в столбцах совместно со связями между таблицами образует структуру базы данных.
Сервер MySQLрасположен на компьютере с адресом 217.71.139.72 под управлением ОС Linux, учетное имя для подключения: userNM, где N – порядковый номер группы (задает преподаватель), M- Ваш номер по журналу, пароль сообщается преподавателем.
Для создания баз данных и таблиц в них, для настройки прав доступа к данным и манипулирования ими в СУБД MySQL применяется программа-монитор mysql. Запустив ее из командной строки, вы подключаетесь к СУБД с именем текущего пользователя операционной системы, если он имеет право на подключение. Для выбора базы данных применяется команда usedbname, где dbname - имя базы данных. Можно указать базу данных, имя пользователя и пароль при вызове монитора:
Mysql dbname -h hostname -u username -p password
Собственно пароль в командной строке лучше не вводить, а оставить ключ -p, тогда пароль будет запрошен дополнительно. Для выхода из монитора применяется команда exit или quit.
Базы данных пользователей и права доступа к ним создаются администратором. Студентам доступна лишь одна (userNM) база, операции создания и удаления таблиц, извлечения, вставки, добавления, удаления записей и изменения структуры таблиц.
Для создания таблиц базы данных применяют командуcreate table tablename (columns), где в скобках перечисляются названия, типы данных и другие атрибуты полей, например:
create table books (id int unsigned not null auto_increment primary key, author char(30), title char(60), price float(5,2));
Для устранения ошибок при вводе длинных команд рекомендуется записывать их в текстовые файлы, запускаемые из командной строки:
mysql dbname -h hostname -u user -p < create.sql
Для просмотра списка созданных таблиц применяют команду show tables, а для просмотра структуры таблицы - команду describe tablename.
Для ввода, извлечения, изменения и удаления данных из таблиц применяют операторы структурированного языка запросов SQL: insert, select, update и delete. Для отбора данных по условию, уточнения изменяемых и удаляемых записей применяется конструкция where, для группирования - groupby, для упорядочивания - orderby. Для удаления таблиц служит команда drop table tablename.
Монитор mysql помнит в буфере ранее введенные команды. Для их вызова используйте стрелку вверх.
По окончании работы с базой данных выгрузите ее структуру и данные в текстовый файл и сохраните его. Он пригодится для восстановления испорченной или уничтоженной базы данных. Для сохранения в текстовых файлах структуры и содержимого базы данных применяют (по выходу из монитора mysql командой exit) утилиту mysqldump:
mysqldump -u user -p dbname >file.type
Методические указания
Для подключения к серверу MySQL применяйте терминальные программы, поддерживающие протокол ssh, различные кодовые страницы и функциональные клавиши, например, telneat или putty. Базы данных пользователей и права доступа к ним создаются администратором. Вам требуется лишь попросить его задать пароль для доступа к своей базе данных. При работе с монитором mysql заканчивайте команды точкой с запятой. Длинные команды (создания таблиц, ввода данных в таблицу) лучше вводить в текстовый файл, передаваемый монитору через командную строку. Монитор mysql помнит в буфере ранее введенные команды. Для их вызова используйте стрелку вверх. Для просмотра содержимого таблиц в кодировке, отличающейся от кодировки сервера MySQL, удобно использовать утилиту netadmin.exe. Как правило, пользователи не имеют прав доступа к базе данных mysql. Для проверки назначенных Вами прав доступа к Вашей базе данных обратитесь к администратору (преподавателю). По окончании работы с базой данных выгрузите ее структуру и данные в текстовый файл и сохраните его. Он пригодится для восстановления испорченной или уничтоженной базы данных.
Порядок выполнения работы
Спроектировать структуру базы данных согласно варианту, обеспечить третью нормальную форму. Используя выданные преподавателем учетные записи (userNM) и пароли, подключиться по протоколу ssh к серверу 217.71.139.72. Подключиться к MySQL-серверу, создать и заполнить таблицы, отладить и записать запросы на добавление, извлечение, изменение и удаление записей. Выгрузить в текстовые файлы структуру и содержимое базы данных с помощью утилиты mysqldump, сохранить на локальной машине и распечатать эти файлы.
Варианты заданий
Вариант 1. Спроектировать структуру базы данных о студентах для их распределения по местам практики: фамилия, год рождения, пол, группа, факультет, средний балл, место работы, город.
Вариант 2. Спроектировать структуру базы данных об автомобилях: номер, год выпуска, марка, цвет, состояние, фамилия владельца, адрес.
Вариант 3. Спроектировать структуру базы данных о квартирах, предназначенных для продажи: район, этаж, площадь, количество комнат, сведения о владельце, цена.
Вариант 4. Спроектировать структуру базы данных о книгах, купленных библиотекой: название, автор, год издания, адрес автора, адрес издательства, цена, книготорговая фирма.
Вариант 5. Спроектировать структуру базы данных о сотрудниках, имеющих компьютер: фамилия, номер комнаты, название отдела, данные о компьютерах.
Вариант 6. Спроектировать структуру базы данных о заказах, полученных сотрудниками фирмы: фамилия, сумма заказа, наименование товара, название фирмы-клиента, фамилия заказчика.
Вариант 7. Спроектировать структуру базы данных об оценках, полученных студентами на экзаменах: фамилия, группа, предмет, номер билета, оценка, преподаватель.
Вариант 8. Спроектировать структуру базы данных о преподавателях кафедры: фамилия, должность, степень, номер комнаты, читаемые курсы.
Вариант 9. Спроектировать структуру базы данных об авторах web-сайта и их статьях: имя, адрес, учетная запись, пароль, тема, заголовок, текст статьи, иллюстрации.
Вариант 10. Спроектировать структуру базы данных о списке рассылки и подписчиках: тема и содержание письма, дата отправки, имена и адреса подписчиков, их учетные записи и пароли.
Вариант 11. Спроектировать структуру базы данных технологических карт: деталь, вид обработки, длительность.
Вариант 12. Спроектировать структуру базы данных о документах, переданных исполнителям: исполнитель, документ, дата передачи, дата возврата.
Вариант 13. Спроектировать структуру базы данных об угнанных автомобилях: номер, марка, состояние (угнан/найден), фамилия владельца.
Вариант 14. Спроектировать структуру базы данных объявлений о квартирах: вид объявления (сдам/продам/сниму/куплю), адрес, количество комнат, дата, цена.
Вариант 15. Спроектировать структуру базы данных о книгах, выданных в библиотеке: название, читатель, дата выдачи, дата возврата.
Вариант 16. Спроектировать структуру базы данных о договорах: название фирмы–клиента, вид договора, срок действия.
Вариант 17. Спроектировать структуру базы данных о выдаче материальных ценностей сотрудникам: фамилия, номер комнаты, изделие, дата выдачи.
Вариант 18. Спроектировать структуру базы данных о галерее изображений: автор, имя файла, дата размещения.
Вариант 19. Спроектировать структуру базы данных о турпутевках: страна, курорт, стоимость, дата выезда.
Вариант 20. Спроектировать структуру базы данных о маршрутах транспорта: вид транспорта, номер, маршрут (начальная и конечная остановки), время в пути.
Содержание отчета
Цель работы. Вариант задания. Структура базы данных в графическом виде. Протокол команд создания таблиц, ввода, отбора, изменения и удаления данных, задания прав доступа. Структура и содержимое базы данных. Выводы по работе.
Контрольные вопросы
Варианты подключения к базе данных с помощью монитора MySQL. Таблицы системы привилегий MySQL. Последовательность контроля доступа к данным в MySQL. Задание прав доступа к данным в MySQL. Архитектура языка SQL. Создание и удаление баз данных и таблиц. Типы данных в MySQL. Индексы, их назначение и создание. Последовательности и автоинкрементирование в MySQL. Добавление данных в таблицу. Изменение и удаление данных. Запросы на извлечение данных. Объединения данных. Группирование и упорядочивание данных. Параметры утилиты mysqldump.
ЛАБОРАТОРНАЯ РАБОТА № 2 PHP. Работа с файлами теневых посылок (cookies) и текстовыми файлами.
Цель работы
Изучить методы получения данных из форм, методы чтения и записи теневых посылок и текстовых файлов.
Краткие теоретические сведения
Сценарии работы с теневой посылкой(cookie) предполагают получение данных формы, проверку наличия файла cookie, его считывание и запись новых данных, отображение предыдущего содержимого теневой посылки.
Для передачи данных Web-серверу используется отправка формы. В форме содержатся текстовые поля, переключатели, списки и т.п. Клиент размещает введенные данные в этих полях и пересылает пакет серверу. Процессом передачи формы управляют два атрибута тега
Элемент формы с типом SUBMIT - это кнопка, нажатие которой пользователем заставляет программу просмотра упаковать данные формы и отправить их. Данные имеют вид пар Поле=Значение, отсылаемых серверу в формате открытого текста. На сервере эти данные можно вновь разобрать по полям и использовать в любых целях. Для разбора полученных от клиента данных, в зависимости от метода их отправки, в PHP используются глобальные ассоциативные массивы $HTTP_POST_VARS[] и $HTTP_GET_VARS[], ключами которых являются имена полей форм. Допустима сокращенная форма записи этих массивов: $_POST и $_GET соответственно. Например, следующие три строки кода вернут значение поля Name:
$a=$HTTP_POST_VARS["Name"];
$a=$_POST["Name"];
$a=$Name;
Часто в теневых посылках сохраняется текущая дата, она определяется так:$date=date("d.m.Y");
Форматы даты/времени многочисленны и здесь не приводятся.
Зная имя теневой посылки и имена хранящихся в ней переменных, можно проверить наличие значения переменной (value) в указанной теневой посылке (visit):
if (isset($_COOKIE["visit"])) $value =$visit;
Здесь приведена сокращенная форма обращения к глобальному ассоциативному массиву $HTTP_COOKIE_VARS[]. Новое значение переменной и срок действия теневой посылки устанавливается так:
setcookie("visit",$_POST[value],time()+365*24*60*60);
header("location:index.php");
Здесь не используются два дополнительных параметра теневой посылки, ограничивающих домены и пути к сценариям, которые имеют право чтения теневой посылки, а также параметр, требующий ее передачи по защищенному (протокол https) каналу связи.
Запись теневой посылки всегда производится до начала отображения результатов работы сценария, поэтому применяется перенаправление на файл сценария.
Пример работы сценария см. здесь: http://gun.cs.nstu.ru/web/labs/lab2/lab2_1/.
При работе с текстовыми файлами, как правило, применяется построчная запись и чтение, поэтому заранее формируется строка с разделителями – символами табуляции:
$str = $date."\t".$_POST["name"]."\t".$_POST["textarea"]."\t". join($checkboxes,",")."\t".$_POST["list"]."\n";
Файл может открываться на добавление ("a") (на запись: "w", на чтение: "r"), при отсутствии - создается:
@ $fp = fopen("1c3.txt", "a");
Символ @ в начале строки служит для подавления вывода в браузер сообщения об ошибке открытия файла (если он не может быть открыт или создан).
Файл открывается в текущем или указанном перед именем файла каталоге, на который сценариям даны соответствующие разрешения.
После открытия файла требуется заблокировать его от записи другими сценариями:
flock($fp, 2);
if (!$fp)
{
echo "Ваша анкета не может быть обработана сейчас!";
exit;
}
Существуют блокировки чтения (1), записи (2) и режим снятия блокировки (по окончании работы с файлом - 3):
flock($fp, 3);
В файл, открытый на запись и добавление, можно только записывать, в данном случае целесообразно писать построчно:
fwrite($fp, $str);
По окончании работы с файлом или при необходимости изменить режим работы с ним его необходимо закрыть:
fclose($fp);
При чтении файла необходимо отслеживать его окончание:
while(!feof($fp)){ . . . }
при этом чтение происходит построчно:
$a = fgets($fp, 100);
Другие функции чтения и записи приведены в справочнике по языку.
Пример работы сценария см. здесь: http://gun.cs.nstu.ru/web/labs/lab2/lab2_2/
Методические указания
Для разработки сценариев применяйте любые доступные текстовые редакторы, например, Jview или Notepad++. Сценарии располагаются на сервере с адресом 217.71.139.72, подключение к которому производится по протоколу FTP с именем учетной записи userNM, где N – порядковый номер группы, M- номер студента по журналу, пароль сообщается преподавателем. При настройке клиента FTP необходимо установить пассивный режим. При разработке страниц периодически сохраняйте их и проверяйте их отображение в любом из доступных браузеров. По окончании лабораторной работы сохраните документы сайта на сменный носитель.
Порядок выполнения работы
Разработать Web-страницу с формой, содержащей указанные в вариантах заданий элементы управления. Разработать сценарий, проверяющий наличие теневой посылки на компьютере посетителя, при ее наличии выводящий данные из теневой посылки в браузер и отображающий ссылку на страницу с формой, и сценарий, считывающий данные формы и сохраняющий их и текущую дату в теневой посылке. Разработать сценарий, считывающий данные формы и сохраняющий их и текущую дату в текстовом файле с последующим отображением всех записей из файла в браузере. Продемонстрировать работу сценариев преподавателю. Сохранить файлы сценария на локальный компьютер.
Варианты заданий
Для теневых посылок:
Вариант 1. Текстовое поле для ввода имени пользователя и кнопка отправки данных.
Вариант 2. Список для выбора языка отображения страницы и кнопка отправки данных.
Вариант 3. Текстовое поле для ввода даты рождения пользователя и кнопка отправки данных.
Вариант 4. Список для выбора кодировки страницы и кнопка отправки данных.
Вариант 5. Набор радиокнопок для выбора прав доступа (пользователь, модератор, администратор) и кнопка отправки данных.
Вариант 6. Набор флажков для выбора допустимых режимов работы (чтение, запись, изменение, удаление) и кнопка отправки данных.
Вариант 7. Набор радиокнопок для выбора кодировки страницы и кнопка отправки данных.
Вариант 8. Набор флажков для выбора управляемых компонентов сайта (текст, графические данные, стили оформления) и кнопка отправки данных.
Вариант 9. Текстовое поле типа password для ввода пароля пользователя и кнопка отправки данных.
Вариант 10. Список для выбора текста уведомления и кнопка отправки данных.
Вариант 11. Набор радиокнопок для выбора шрифта текста и кнопка отправки данных.
Вариант 12. Набор флажков для выбора стиля текста (размер, жирность, курсив, цвет) и кнопка отправки данных.
Вариант 13. Текстовое поле для ввода e-mail пользователя и кнопка отправки данных.
Вариант 14. Список для выбора интервала уведомления и кнопка отправки данных.
Вариант 15. Набор радиокнопок для выбора времени отправки уведомления и кнопка отправки данных.
Вариант 16. Набор флажков для выбора способа уведомления (звонок, SMS, e-mail) и кнопка отправки данных.
Вариант 17. Текстовое поле для ввода приветствия пользователя и кнопка отправки данных.
Вариант 18. Список для выбора места размещения приветствия и кнопка отправки данных.
Вариант 19. Набор радиокнопок для выбора места размещения приветствия и кнопка отправки данных.
Вариант 20. Набор флажков для выбора степени детализации сообщений об ошибках (замечание, предупреждение, ошибка, фатальная ошибка) и кнопка отправки данных.
Для текстовых файлов:
Вариант 1. Текстовое поле для ввода имени пользователя, текстовое поле для ввода даты рождения пользователя и кнопка отправки данных.
Вариант 2. Список для выбора темы обсуждения, поле TEXTAREAдля ввода сообщения и кнопка отправки данных.
Вариант 3. Текстовое поле для ввода имени пользователя, поле TEXTAREAдля ввода комментария и кнопка отправки данных.
Вариант 4. Список для выбора наименования товара, текстовое поле для ввода количества товара и кнопка отправки данных.
Вариант 5. Набор радиокнопок для выбора дня недели, список для выбора интервала времени для связи и кнопка отправки данных.
Вариант 6. Набор флажков для выбора дня недели, список для выбора интервала времени для связи и кнопка отправки данных.
Вариант 7. Набор радиокнопок для выбора кодировки сообщения, поле TEXTAREAдля ввода сообщения и кнопка отправки данных.
Вариант 8. Набор флажков для выбора вариантов оформления текста, поле TEXTAREAдля ввода комментария и кнопка отправки данных.
Вариант 9. Текстовое поле для ввода имени пользователя, поле TEXTAREAдля ввода приветствия и кнопка отправки данных.
Вариант 10. Список для выбора стиля приветствия, текстовое поле для ввода размера шрифта и кнопка отправки данных.
Вариант 11. Набор радиокнопок для выбора стиля приветствия, список для выбора размера шрифта и кнопка отправки данных.
Вариант 12. Набор флажков для выбора стиля приветствия, список для выбора размера шрифта для связи и кнопка отправки данных.
Вариант 13. Текстовое поле для ввода имени пользователя, поле TEXTAREAдля ввода сайтов для управления и кнопка отправки данных.
Вариант 14. Список для выбора прав доступа (пользователь, модератор, администратор), текстовое поле типа password для ввода пароля и кнопка отправки данных.
Вариант 15. Набор радиокнопок для выбора кодировки страницы, список для выбора шрифта и кнопка отправки данных.
Вариант 16. Набор флажков для выбора допустимых режимов работы (чтение, запись, изменение, удаление), список для выбора управляемого сайта и кнопка отправки данных.
Вариант 17. Текстовое поле для ввода имени туриста, поле TEXTAREAдля ввода пожеланий по формам отдыха и кнопка отправки данных.
Вариант 18. Список для выбора категории гостиницы, текстовое поле для ввода дней проживания и кнопка отправки данных.
Вариант 19. Набор радиокнопок для выбора страны посещения, список для выбора курортаи кнопка отправки данных.
Вариант 20. Набор флажков для выбора экскурсий, список для выбора времени экскурсий и кнопка отправки данных.
Содержание отчета
Цель работы. Вариант задания. Листинг сценариев. Выводы по результатам работы.
Контрольные вопросы
Атрибуты тега |