Контрольная работа
Работа с базами данных. Включение в программу файлов
Контрольные вопросы1.Как осуществляется подключение к серверу базы данных и выбор базы данных?
2.Каким образом выполнить в PHP запрос SQL?
3.Как обработать результаты запроса SELECT ?
4.Как получить информацию о базе данных?
5.Какие команды используют для включения файлов в документ?
Задание№ 1Создайте файл
z10-1.htm с HTML-формой, позволяющей выбрать
а) структуру (группа флажков
"structure") и/или
б) содержимое (группа флажков
"content")
любой таблицы базы данных
study:
При нажатии кнопки "Вывести" должен вызываться скрипт
z10-2.php (для передачи названий таблиц используйте метод GET):
№ 2Скрипт
z10-2.php должен быть составным, т.е. иметь вид:
Именно таким образом и происходит отделение оформления страниц сайта от обращения к СУБД и от собственно наполнения (контента) каждой страницы.
Особенно важно, чтобы для инициализации обращения к базе данных был один единственный inc-файл! Тогда, чтобы заменить логин и пароль доступа к БД (например, при смене провайдера сайта), достаточно исправить всего один файл.
№ 3В файле
z10-3.inc содержится раздел
<style>, в котором заданы CSS-стили для:
- th - шрифт Arial, размер шрифта 10pt,
- td - шрифт Courier New, размер шрифта 12pt,
- h4 - цвет заголовка синий, размер шрифта 14pt.
и команды
</head> <body>№ 4В файле
z10-4.inc содержатся php-команды для подключение к базе данных
study.
№ 5В файле
z10-5.inc содержатся функции
vid_structure() и
vid_content() для отображения структуры и содержимого таблицы, выбранной в HTML-форме (имя таблицы является аргументом функций).
Перед вызовом функций
обязательно проверять, заданы ли значения для переменных
$structure и
$content.
Функция
vid_structure() отображает структуру выбранной таблицы (использовать листинг 11-6).
Функция
vid_content() отображает содержимое выбранной таблицы, причем в первой строке таблицы, в каждой ячейке
<th> сперва указаны русские названия для столбцов таблицы, а через <br> — собственно имена столбцов. Для этого в функции создайте ассоциативный массив
$rus_name[], в котором ключами будут имена столбцов, а значениями ключей — русские названия этих столбцов (массив должен быть
единый для всех 3 таблиц).
В заголовках
<h4> ("Структура таблицы …" и "Содержимое таблицы …") должно подставляться название выбранной таблицы.
В конце файла
z10-5.inc поставьте гиперссылку на
z10-1.htm ("Возврат к выбору таблицы").
№ 6В файле
z10-6.inc содержится php-команда для отключения от базы данных.
Лабораторная работа №1
« Язык MySQL»
Конторольные вопросы1.Назовите команды, позволяющие просматривать содержимое таблиц и получать информацию об их структуре.
2.Перечислите известные вам реляционные, булевы и специальные операторы языка MySQL.
3.Каким образом агрегатные функции применяются к группам строк?
4.Для чего служит механизм определения псевдонимов таблиц?
5.Назовите команды создания, изменения и удаления таблиц.
6.Перечислите команды изменения данных в таблицах.
ЗаданиеВ файл
z1-1.txt занесите ответы на следующие вопросы:
- Напишите запрос, который выводит все строки из таблицы Покупателей, для которых номер продавца равен 1001.
- Напишите запрос, который выводит таблицу Продавцов со столбцами в следующем порядке: city, sname, snum, comm.
- Напишите запрос, который выводит оценку (rating), сопровождаемую именем каждого покупателя в городе San Jose.
- Напишите запрос, который выводит значение номера продавца всех продавцов из таблицы Заказов без каких бы то ни было повторений.
- Напишите запрос, который может выдать вам поля sname и city для всех продавцов в Лондоне с комиссионными строго больше 0.11
- Напишите запрос к таблице Покупателей, который может вывести данные обо всех покупателях с рейтингом меньше или равным 200, если они не находятся в Риме
- Запросите двумя способами все заказы на 3 и 5 октября 1990 г.
- Напишите запрос, который может вывести всех покупателей, чьи имена начинаются с буквы, попадающей в диапазон от A до G.
- Напишите запрос, который выберет всех продавцов, имена которых содержат букву e.
- Напишите запрос, который сосчитал бы сумму всех заказов на 3 октября 1990 г.
- Напишите запрос, который сосчитал бы сумму всех заказов для продавца с номером 1001
- Напишите запрос, который выбрал бы наибольший заказ для каждого продавца.
- Напишите запрос, который выбрал бы покупателя, чье имя является первым в алфавитном порядке среди имен, заканчивающихся на букву s.
- Напишите запрос, который выбрал бы средние комиссионные в каждом городе.
- Напишите запрос, который вывел бы для каждого заказа на 3 октября его номер, стоимость заказа в евро (1$=0.8 евро), имя продавца и размер комиссионных, полученных продавцом за этот заказ.
- Напишите запрос, который выводит номера заказов в возрастающем порядке, а также имена продавцов и покупателей заказов, продавец которых находится в Лондоне или Риме.
- Запросите имена продавцов в алфавитном порядке, суммарные значения их заказов, совершенных до 5 октября, и полученные комиссионные.
- Выведите номера заказов, их стоимость и имена продавцов и покупателей, если продавцы и покупатели находятся в городах, чьи названия начинаются с букв из диапазона от L до R.
- Запросите все пары покупателей, обслуживаемые одним и тем же продавцом. Исключите комбинации покупателей с самими собой, а также пары в обратном порядке.
- С помощью подзапроса выведите имена всех покупателей, чьи продавцы имеют комиссионные меньше 0.13.
- Напишите команду, создающую копию таблицы Продавцов с одновременным копированием данных из SAMPLE.SAL. Убедитесь в сходности структур таблиц при помощи команды DESC и идентичности данных в таблице-оригинале и таблице-копии.
- Напишите последовательность команд, которая вставляет две новые записи в вашу таблицу Продавцов, выводит таблицу после вставки, удаляет одну запись о новом продавце и вновь выводит таблицу.
- Напишите последовательность команд, которая вставляет две строки в вашу таблицу Продавцов, увеличивает в 2 раза комиссионные у всех продавцов и выводит содержимое таблицы после каждого изменения.
Лабораторная работа №2
«Основные конструкции языка PHP»
Конторольные вопросы1.Каким образом вставить РНР-команды в HTML-программу?
2.Для чего используются динамические переменные и ссылки на переменные?
3.Каким образом можно изменить или преобразовать тип переменной?
4.Назовите операторы, предназначенные для работы со строковыми переменными.
5.В чем заключается разница между циклами while, do..while и for ?
6.Как можно прервать цикл или пропустить текущую итерацию?
7.Опишите разные способы передачи аргументов внутрь функции, объяснив их различие.
8.Что такое функции-переменные?
9.Назовите особенности ассоциативных массивов.
10.Какая конструкция предназначена для просмотра ассоциативных массивов в цикле?
11.Опишите функции сортировки массивов, объяснив их различие.
Задание№ 1Используя переменные $color и $size сформировать php-скрипт
z2-1.php, который выводит на экран строку текста заданным цветом и размером.
(Использовать листинг 1-2).
№ 2Пусть в скрипте
z2-5.php переменная $lang может принимать значения "ru", "en", "fr" или "de". Используя операторы if-else-elseif обеспечьте вывод на экран полного названия языка (русский, английский, …) в зависимости от того, что задано в строке вызова скрипта:
z05-5.php?lang=ru [en/fr/de]
Обязательно предусмотреть случай неверного задания значения параметра lang - тогда должна выводиться надпись "язык неизвестен".
(Использовать листинг 6-2).
№ 3Используя вложенные циклы while, в скрипте
z3-1.php отобразите на экране таблицу Пифагора 10×10 (т.е. таблицу умножения чисел от 1 до 10). При этом фон диагональных ячеек должен быть того цвета, который задается
вне циклов. Ширина рамки таблицы равна 1, отступ содержимого ячеек от границы равен 5.
Обязательно используйте служебные символы табуляции и новой строки для создания читабельного html-файла.
(Использовать листинги 7-1 и 7-6).
№ 4Используя вложенные циклы for в скрипте
z3-2.php отобразите на экране таблицу
сложения чисел от 1 до 10. При этом цвет цифр в верхней строке и левом столбце должен быть задан через $color
вне циклов, а в левой верхней ячейке должен стоять знак "+" красного цвета. Ширина рамки таблицы равна 1, отступ содержимого ячеек от границы равен 5.
(Использовать листинг 7-6).
№ 5В скрипте
z3-3.php создайте 4 функции с именами Ru(), En(), Fr(), De(). Каждая функция выводит на экран приветствие на соответствующем языке:
Ru() - "Здравствуйте!",
En() - "Hello!",
Fr() - "Bonjour!" и
De() - "Guten Tag!".
Эти функции имеют аргумент $color, который определяет цвет выводимого текста. Используя функцию-переменную $lang(), отобразить на экране одно из приветствий, причем какое приветствие будет выведено и каким цветом - задать как параметры в строке вызова скрипта:
z3-3.php?lang=Ru&color=[назв-е цвета]
En/Fr/De
(Использовать листинг 8-3).
№ 6В скрипте
z3-5.php- Создайте массив $treug[] "треугольных" чисел, т.е. чисел вида n(n+1)/2 (где n=1,2,: 10) и выведите значения этого массива на экран в строку (через 2 пробела).
- Создайте массив $kvd[] квадратов натуральных чисел от 1 до 10, выведите значения этого массива на экран в строку.
- Объедините эти 2 массива в массив $rez[], выведите результат на экран.
- Отсортируйте массив $rez[], выведите результат на экран.
- Удалите в массиве $rez[] первый элемент, выведите результат на экран.
- С помощью функции array_unique() удалите из массива $rez[] повторяющиеся элементы, результат занесите в массив $rez1[] и выведите его на экран.
(Использовать листинги 9-2 - 9-10).
№ 7В скрипте
z3-6.php1. Создайте ассоциативный массив $cust[]
с ключами cnum, cname, city, snum и rating
и значениями: 2001, Hoffman, London, 1001 и 100.
Выведите этот массив (вместе с именами ключей) на экран.
2. Отсортируйте этот массив по значениям. Выведите результат на экран.
3. Отсортируйте этот массив по ключам. Выведите результат на экран.
4. Выполните сортировку массива с помощью функции sort(). Выведите результат на экран.
(Использовать листинги 9-1 - 9-10).