Практическая
работа №
Тема: Создание базы данных в MySQL.
Цель: Получить навык в
создании базы данных, используя phpMyAdmin.
Программное обеспечение:
Для выполнения лабораторной работы необходимо следующее ПО:
1.
Текстовый редактор: Блокнот или Notepad++.
2.
Программа для просмотра web-страниц
– любой современный браузер (GoogleChrome, Mozilla FireFox).
3.
Виртуальный сервер Denwer.
4.
Графический редактор MS Visio.
Задание:
1.
Создайте концептуальную модель при помощи редактора
MSVisio (в соответствии с номером варианта выберите предметную область, концептуальную модель ограничить 3-4
сущностями).
№варианта
|
Наименование предметной области
|
1
|
Покупка
билетов в кино
|
2
|
Оказание
платных типографических услуг
|
3
|
Продажа
комнатных растений
|
4
|
Оформление
штрафов за нарушение правил дорожного движения
|
5
|
Электронная
библиотека
|
6
|
Учет
детей в детском саду
|
7
|
Учет
потребления электроэнергии физическими лицами
|
8
|
Аренда
торговых площадей в торговом центре
|
2.
Создайте структуру базы данных в соответствии с
концептуальной моделью при помощи phpMyAdmin (смотрите указания к выполнению и теоретические основы).
3.
Заполните базу данными (по 10 записей).
Отчет:
Отчет о выполнении лабораторной работы должен содержать
следующие разделы:
1. Тему, цель, задание.
2. Ход работы: концептуальная модель в гибридной
нотации Питера Чена и Мартина, скриншот выполняемых действий и их описание,
скриншот физической модели БД.
3. Вывод о выполненной работе.
Защита
Защита лабораторной работы осуществляется на следующем
лабораторном занятии. Для защиты необходимо предоставить отчет о выполненной лабораторной
работе и продемонстрировать созданную БД.
Студент допускается к защите ТОЛЬКО ПРИ НАЛИЧИИ отчета
и знании теоретического материала, размещенного в методических указаниях.
Теоретические основы
Типы данных
в MySQL
MySQL поддерживает несколько типов столбцов, которые можно разделить
на три категории: числовые типы данных, типы данных для хранения даты и времени
и символьные (строковые) типы данных. В данном разделе вначале дается обзор всех
возможных типов и приводятся требования по хранению для каждого типа столбца, затем
свойства типов описываются более подробно по каждой категории. Мы намеренно сделали
обзор кратким, поскольку более детальные описания требуют дополнительной информации
о конкретных типах столбцов, например, о допустимых форматах представления величин.
Ниже перечислены типы столбцов, поддерживаемые MySQL. В описаниях
используются следующие обозначения:
M
Указывает максимальный размер вывода. Максимально допустимый
размер вывода составляет 255 символов.
D
Употребляется для типов данных с плавающей точкой и
указывает количество разрядов, следующих за десятичной точкой. Максимально возможная
величина составляет 30 разрядов, но не может быть больше, чем M
-2.
Квадратные скобки (`[' и `]') указывают для типа
данных группы необязательных признаков.
Заметьте, что если для столбца указать параметр ZEROFILL
, то MySQL будет автоматически добавлять в этот столбец атрибут UNSIGNED
.
TINYINT[(M)] [UNSIGNED] [ZEROFILL]
Очень малое целое число. Диапазон со знаком от -128
до 127
. Диапазон без знака от 0
до 255
.
BIT
BOOL
Являются синонимами для TINYINT(1)
.
SMALLINT[(M)] [UNSIGNED] [ZEROFILL]
Малое целое число. Диапазон со знаком от -32768
до 32767
. Диапазон без знака от 0
до 65535
.
MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]
Целое число среднего размера. Диапазон со знаком от -8388608
до 8388607
. Диапазон без знака от 0
до 16777215
.
INT[(M)] [UNSIGNED] [ZEROFILL]
Целое число нормального размера. Диапазон со знаком
от -2147483648
до 2147483647
. Диапазон без знака от 0
до 4294967295
.
INTEGER[(M)] [UNSIGNED] [ZEROFILL]
Синоним для INT
.
BIGINT[(M)] [UNSIGNED] [ZEROFILL]
Большое целое число. Диапазон со знаком от -9223372036854775808
до 9223372036854775807
. Диапазон без знака от 0 до18446744073709551615
. Для столбцов типа BIGINT
необходимо учитывать некоторые особенности:
·
Все арифметические операции выполняются
с использованием значений BIGINT
или DOUBLE
со знаком, так что не следует использовать беззнаковые
целые числа больше чем 9223372036854775807
(63 бита), кроме операций, выполняемых логическими функциями.
В противном случае несколько последних разрядов результата могут оказаться ошибочными
из-за ошибок округления при преобразовании BIGINT
в DOUBLE
. MySQL 4.0 может обрабатывать данные типа BIGINT
в следующих случаях:
o
Использование целых чисел для хранения
больших беззнаковых величин в столбце с типом
BIGINT
.
o
В случаях MIN(big_int_column)
и MAX(big_int_column)
.
o
При использовании операторов (`+', `-', `*' и т.д.), когда оба операнда являются целыми
числами.
·
Точное значение целого числа всегда
можно хранить в столбце с типом BIGINT
в виде строки. В этом случае MySQL выполнит преобразование
строки в число без промежуточного преобразования.
·
Если оба аргумента являются целочисленными
величинами, то при выполнении над ними операций `-', `+',
и `*' будут использоваться правила BIGINT
-арифметики. Это означает, что при умножении двух больших целых
чисел (или результатов вычислений функций, возвращающих целые числа) результат операции
может оказаться непредсказуемым, если он превосходит значение 9223372036854775807
.
FLOAT(точность) [UNSIGNED] [ZEROFILL]
Число с плавающей точкой. Атрибут точности может иметь
значение <=24
для числа с плавающей точкой обычной (одинарной) точности
и между 25
и 53
- для числа с плавающей точкой удвоенной точности. Эти
типы данных сходны с типами FLOAT
и DOUBLE
, описанными ниже.FLOAT(X)
относится к тому же интервалу, что и соответствующие
типы FLOAT
и DOUBLE
, но диапазон значений и количество десятичных знаков не определены.
В версии MySQL 3.23 это истинная величина числа с плавающей точкой. В более ранних
версиях MySQL тип данныхFLOAT(точность)
всегда
имеет два десятичных знака. Следует отметить, что использование типа данных FLOAT
может привести к неожиданным проблемам, так как все
вычисления в MySQL выполняются с удвоенной точностью.
FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]
Малое число с плавающей точкой обычной точности. Допустимые
значения: от -3,402823466E+38
до -1,175494351E-38
, 0
, и от1,175494351E-38
до 3,402823466E+38
. Если указан атрибут UNSIGNED
, отрицательные значения недопустимы. Атрибут M
указывает количество выводимых пользователю знаков,
а атрибут D
- количество разрядов, следующих за десятичной точкой.
Обозначение FLOAT
без указания аргументов или запись вида FLOAT(X)
, где X
<=24
справедливы для числа с плавающей точкой обычной точности.
DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]
Число с плавающей точкой удвоенной точности нормального
размера. Допустимые значения: от -1,7976931348623157E+308
до-2,2250738585072014E-308
, 0
, и от 2,2250738585072014E-308
до 1,7976931348623157E+308
. Если указан атрибут UNSIGNED
, отрицательные значения недопустимы. Атрибут M
указывает количество выводимых пользователю знаков,
а атрибут D
- количество разрядов, следующих за десятичной точкой.
Обозначение DOUBLE
без указания аргументов или запись вида FLOAT(X)
, где 25 <= X <= 53
справедливы для числа с плавающей точкой двойной точности.
DOUBLE PRECISION[(M,D)] [UNSIGNED] [ZEROFILL]
REAL[(M,D)] [UNSIGNED] [ZEROFILL]
Данные обозначения являются синонимами для DOUBLE
.
DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]
``Неупакованное'' число с плавающей точкой. Ведет себя
подобно столбцу CHAR
, содержащему цифровое значение. Термин ``неупакованное'' означает,
что число хранится в виде строки и при этом для каждого десятичного знака используется
один символ. Разделительный знак десятичных разрядов, а также знак `-' для отрицательных чисел не учитываются в M
(но место для них зарезервировано). Если атрибут D
равен 0
, величины будут представлены без десятичного знака, т.е. без
дробной части. Максимальный интервал значений типа DECIMAL
тот же, что и для типа DOUBLE
, но действительный интервал для конкретного столбца DECIMAL
может быть ограничен выбором значений атрибутов M
и D
. Если указан атрибут UNSIGNED
, отрицательные значения недопустимы. Если атрибут D
не указан, его значение по умолчанию равно 0
. Если не указан M
, его значение по умолчанию равно 10
. В более ранних, чем MySQL 3.23, версиях аргумент M
должен содержать в себе место для знака числа и десятичного
знака.
DEC[(M[,D])] [UNSIGNED] [ZEROFILL]
NUMERIC[(M[,D])] [UNSIGNED] [ZEROFILL]
Данные обозначения являются синонимами для DECIMAL
.
DATE
Дата. Поддерживается интервал от '1000-01-01'
до '9999-12-31'
. MySQL выводит значения DATE
в формате 'YYYY-MM-DD'
, но можно установить значения в столбец DATE
, используя как строки, так и числа.
DATETIME
Комбинация даты и времени. Поддерживается интервал от '1000-01-01 00:00:00'
до '9999-12-31 23:59:59'
. MySQL выводит значенияDATETIME
в формате 'YYYY-MM-DD HH:MM:SS'
, но можно устанавливать значения в столбце DATETIME
, используя как строки, так и числа.
TIMESTAMP
[(
M
)]
Временная метка. Интервал от '1970-01-01 00:00:00'
до некоторого значения времени в 2037 году. MySQL выводит
значения TIMESTAMP
в форматах YYYYMMDDHHMMSS
, YYMMDDHHMMSS
, YYYYMMDD
или YYMMDD
в зависимости от значений M
: 14
(или отсутствующее), 12
, 8
, или 6
; но можно также устанавливать значения в столбце TIMESTAMP
, используя как строки, так и числа. Столбец TIMESTAMP
полезен для записи даты и времени при выполнении операций INSERT
или UPDATE
, так как при этом автоматически вносятся значения даты и времени
самой последней операции, если эти величины не введены программой. Можно также устанавливать
текущее значение даты и времени, задавая значение NULL
. Аргумент M
влияет только на способ вывода столбца TIMESTAMP
; для хранения его значений всегда используется 4 байта. Следует
учитывать, что столбцы TIMESTAMP(M)
, где M
равно 8
или 14
, представляют собой числа, в то время, как столбцы TIMESTAMP(M)
с иным значением аргумента M
являются строками. Это убеждает, что можно надежно сделать
дамп и восстановить таблицу с этими типами столбцов!
TIME
Время. Интервал от '-838:59:59'
до '838:59:59'
. MySQL выводит значения TIME
в формате 'HH:MM:SS'
, но можно устанавливать значения в столбце TIME
, используя как строки, так и числа.
YEAR[(2|4)]
Год в двухзначном или четырехзначном форматах (по умолчанию
формат четырехзначный). Допустимы следующие значения: с 1901
по2155
, 0000
для четырехзначного формата года и 1970-2069
при использовании двухзначного формата (70-69
). MySQL выводит значенияYEAR
в формате YYYY
, но можно задавать значения в столбце YEAR
, используя как строки, так и числа (тип данных YEAR
недоступен в версиях, предшествующих MySQL 3.22).
[NATIONAL] CHAR(M) [BINARY]
Строка фиксированной длины, при хранении всегда дополняется
пробелами в конце строки до заданного размера. Диапазон аргумента M
составляет от 0
до 255
символов (от 1
до 255
в версиях, предшествующих MySQL 3.23). Концевые пробелы
удаляются при выводе значения. Если не задан атрибут чувствительности к регистру BINARY
, то величины CHAR
сортируются и сравниваются как независимые от регистра
в соответствии с установленным по умолчанию алфавитом. Атрибут NATIONAL CHAR
(или его эквивалентная краткая форма NCHAR
) представляет собой принятый в ANSI SQL способ указания, что
в столбце CHAR
должен использоваться установленный по умолчанию набор
символов (CHARACTER
). В MySQL это принято по умолчанию. CHAR
является сокращением от CHARACTER
. MySQL позволяет создавать столбец типа CHAR(0)
. В основном это полезно, если необходимо обеспечить совместимость
с некоторыми старыми приложениями, которые зависят от наличия столбца, но реально
эту величину не используют. Кроме того, такая возможность может очень пригодиться
в случае, если необходим столбец, который может содержать только 2 значения, а именно CHAR(0)
(т.е. столбец, который не определен как NOT NULL
, занимает только один бит и принимает только 2 значения: NULL
или ""
).
CHAR
Это синоним для CHAR
(1)
.
[
NATIONAL
]
VARCHAR
(
M
) [
BINARY
]
Строка переменной длины. Примечание: концевые пробелы удаляются при сохранении значения
(в этом заключается отличие от спецификации ANSI SQL). Диапазон аргумента M
составляет от 0
до 255
символов (от 1
до 255
в версиях, предшествующих MySQL Version 4.0.2). Если
не задан атрибут чувствительности к регистру BINARY
, то величины VARCHAR
сортируются и сравниваются как независимые от регистра.
Термин VARCHAR
является сокращением от CHARACTER VARYING
.
TINYBLOB
TINYTEXT
Столбец типа BLOB
или TEXT
с максимальной длиной 255
(2^8 - 1
) символов
BLOB
TEXT
Столбец типа BLOB
или TEXT
с максимальной длиной 65535
(2^16 - 1
) символов.
MEDIUMBLOB
MEDIUMTEXT
Столбец типа BLOB
или TEXT
с максимальной длиной 16777215
(2^24 - 1
) символов.
LONGBLOB
LONGTEXT
Столбец типа BLOB
или TEXT
с максимальной длиной 4294967295
(2^32 - 1
) символов.
Следует учитывать, что в настоящее время протокол передачи данных сервер/клиент
и таблицы MyISAM
имеют ограничение 16 Мб на передаваемый пакет/строку
таблицы, поэтому пока нельзя использовать этот тип данных в его полном диапазоне.
ENUM('значение1','значение2',...)
Перечисление. Перечисляемый тип данных. Объект строки
может иметь только одно значение, выбранное из заданного списка величин'значение1'
, 'значение2'
, ...
, NULL
или специальная величина ошибки ""
. Список ENUM
может содержать максимум 65535
различных величин.
SET('значение1','значение2',...)
Набор. Объект строки может иметь ноль или более значений,
каждое из которых должно быть выбрано из заданного списка величин'значение1'
, 'значение2'
, ...
Список SET
может содержать максимум 64 элемента.
Ссылочная целостность
Внешний ключ
Внешние
ключи - это основной механизм для организации связей между таблицами и
поддержания целостности и непротиворечивости информации в базе данных.
Внешний
ключ - это столбец или группа столбцов, ссылающиеся на столбец или группу
столбцов другой (или этой же) таблицы. Таблица, на которую ссылается внешний
ключ, называется родительской таблицей, а столбцы, на которые ссылается внешний
ключ - родительским ключом. Родительский ключ должен быть первичным или
уникальным ключом, значения же внешнего ключа могут повторяться хоть сколько
раз. То есть с помощью внешних ключей поддерживаются связи "один ко
многим". Типы данных (а в некоторых СУБД и размерности) соответствующих
столбцов внешнего и родительского ключа должны совпадать.
И
самое главное. Все значения внешнего ключа должны совпадать с каким-либо из
значений родительского ключа. (Заметим в скобках насчет совпадения /
несовпадения: нюансы возникают, когда в значениях столбцов вторичного ключа
встречается NULL. Давайте пока в эти нюансы вдаваться не будем). Появление
значений внешнего ключа, для которых нет соответствующих значений родительского
ключа, недопустимо. Вот тут-то мы плавно переходим к понятию ссылочной
целостности.
Ссылочная целостность
Первое
из правил ссылочной целостности фактически уже изложено в предыдущем абзаце: в
таблице не допускается появления (неважно, при добавлении или при модификации)
строк, внешний ключ которых не совпадает с каким-либо из имеющихся значений
родительского ключа.
Более
интересные моменты возникают, когда мы удаляем или изменяем строки родительской
таблицы. Как при этом не допустить появления \"болтающихся в
воздухе\" строк дочерней таблицы? Для этого существуют правила ссылочной
целостности ON UPDATE и ON DELETE, которые, по стандарту SQL 92, могут
содержать следующие инструкции:
·
CASCADE - обеспечивает
автоматическое выполнение в дочерней таблице тех же изменений, которые были
сделаны в родительском ключе. Если родительский ключ был изменен - ON UPDATE
CASCADE обеспечит точно такие же изменения внешнего ключа в дочерней таблице.
Если строка родительской таблицы была удалена, ON DELETE CASCADE обеспечит
удаление всех соответствующих строк дочерней таблицы.
·
SET NULL - при удалении
строки родительской таблицы ON DELETE SET NULL установит значение NULL во всех
столбцах вторичного ключа в соответствующих строках дочерней таблицы. При
изменении родительского ключа ON UPDATE SET NULL установит значение NULL в
соответствующих столбцах соответствующих строк (о как:) дочерней таблицы.
·
SET DEFAULT - работает
аналогично SET NULL, только записывает в соответствующие ячейки не NULL, а
значения, установленные по умолчанию.
·
NO ACTION (установлено по
умолчанию) - при изменении родительского ключа никаких действий с внешним
ключом в дочерней таблице не производится. Но если изменение значений
родительского ключа приводит к нарушению ссылочной целостности (т.е. к
появлению "висящих в воздухе" строк дочерней таблицы), то СУБД не
даст произвести такие изменения родительской таблицы.
Указания к выполнению задания
- Запустите Денвер.
- Зайдите в phpMyAdmin.
- В основных настройках выберите кодировку utf8_general_ci.
- Выберите вкладку
«Базы данных» и создайте новую.
- Далее выберите в
списке на левой панели свою БД и создайте в ней таблицы, используя
диалоговые окна.
Создание
таблицы с именем «user» представлено на следующем рисунке.
Таблица содержит 4 поля «ntab» (номер табельный, тип –
числовой, количество разрядов – 4, и ндекс – первичный ключ PRIMAR, автоматический инкремент при добавлении новой записи – AI), «fio» (ФИО, тип – строковый, длина – 160
символов), «data_rogd»
(дата_рождения, тип - дата), «lgoty»(льготы, тип –
логический (есть льгота у клиента, либо ее нет). Поля не могут быть пустыми.
- Чтобы изменить
структуру таблицы необходимо выбрать ссылку «структура» для
соответствующей таблицы.
Далее в
соответствующем поле (например, data_rogd ) выбрать ссылку «Изменить»
В
сплывающем окне необходимо внести изменения в существующую структуру поля
таблицы (например, указать, что поле «data_rogd» может быть пустым – в графе «NULL» поставить
галочку). Обязательно нажать кнопку «Сохранить».
- Для организации
ссылочной целостности необходимо создать внешние ключи. (если таблиц в
базе 2 и более). Для этого, поле, которое будет являться внешним ключом,
необходимо проиндексировать. (Например, создана еще одна таблица «zakaz» - заказ, она содержит три поля: «id_zak» - идентификатор заказа, «data_zak» - дата заказа, «id_user» - идентификатор клиента). Поле «id_user» будет являться внешним ключом для связи с таблицей «user». Для этого его необходимо проиндексировать.
Далее
необходимо выбрать ссылку «Связь», после чего появится диалоговое окно, в
котором необходимо выбрать поле другой таблицы, на которое ссылается внешний
ключ (в данном случае это user.ntab).
Необходимо так же указать тип ссылочной целостности для операций удаления и
обновления записей (читайте теоретические основы) и нажать кнопку «Сохранить».
- phpMyAdmin
предоставляет дизайнер, который отображает физическую модель БД (поля с
соответствующими типами данных и ограничениями, а так же связи по внешним
ключам).
- Для заполнения
базы данными с использованием phpMyAdmin необходимо
выбрать вкладку «Вставить»
Введите
необходимые значения (не забудьте, что поле с первичным ключом наращивается
автоматически, поэтому не требует ввода значения, а поле «data_rogd» - может быть пустым) и нажмите «ОК».
Выбрав
во вкладках «Обзор», вы увидите введенные вами данные, доступные для
редактирования.
Практическая работа №
Тема: Работа с базой данных в
MySQL.
Цель: Получить навык в
выборке, обновлении, удалении, добавлении данных в базу данных при работе с web-страницами, используя язык php.
Программное обеспечение:
Для выполнения лабораторной работы необходимо следующее ПО:
1.
Текстовый редактор: Блокнот или Notepad++.
2.
Программа для просмотра web-страниц
– любой современный браузер (GoogleChrome, Mozilla FireFox).
3.
WEB - сервер Apache.
Задание:
1.
Прочесть теоретические основы и указания к
выполнению.
2.
Создайте web-страницу,
позволяющую пользователю по нажатию на кнопку выбрать из базы сведения. (Работа
ведется с базой, созданной на предыдущем практическом занятии).
3.
Создайте web-страницу,
позволяющую пользователю по нажатию на кнопку добавить в базу сведения,
введенные им в компоненты формы. (Работа ведется с базой, созданной на
предыдущем практическом занятии).
4.
Создайте web-страницу,
позволяющую пользователю по нажатию на кнопку отобразить содержимое одной
таблицы. Каждая строка отображенной таблицы должна иметь ссылку, при выборе
которой, соответствующая запись удаляется из базы (Работа ведется с базой,
созданной на предыдущем практическом занятии).
5.
Создайте web-страницу,
позволяющую пользователю обновлять данные в базе. (Работа ведется с базой,
созданной на предыдущем практическом занятии).
Отчет:
Отчет о выполнении лабораторной работы должен содержать
следующие разделы:
1. Тему, цель, задание.
2. Ход работы: к каждому заданию сриншот web-страницы до
нажатия кнопки и после нажатия кнопки, код web-страницы с комментариями.
3. Вывод о выполненной работе.
Защита
Защита лабораторной работы осуществляется на следующем
лабораторном занятии. Для защиты необходимо предоставить отчет о выполненной лабораторной
работе и продемонстрировать работу.
Студент допускается к защите ТОЛЬКО ПРИ НАЛИЧИИ отчета,
web-страниц,
а так же знании теоретического материала.
Теоретические
основы
В PHP есть замечательная возможность использовать
локальные переменные окружения, к которым относятся $_POST, $_GET и другие переменные. С точки зрения
безопасности php скриптов,
в идеале должны использоваться только $_POST и $_GET для получения параметров, переданных
скрипту через строку браузера или командную строку. Использовать $_POST и $_GET безопасно по одной простой причине – вы
сами определяете, какие переменные из запроса к php скрипту вы будете использовать, а какие
оставите без внимания.
Полученные переменные $_POST и $_GET представляют собой простой ассоциированный
массив. Где ключом массива является имя переменной, а соответствующим значением
– ее значение. Т.е. при запросе вида:
http://wm-help.net/?module=word-stat&mode=site_i_date&date=198918&search_site_url=yandex
в переменной
$_GET будет содержаться
следующий массив:
Array
(
[module] => word-stat
[mode] => site_i_date
[date] => 198918
[search_site_url] => yandex
)
Для получения значения какой-либо
переменной из этого массива достаточно всего лишь обратиться к ней по ее
имени-ключу в массиве. Например, для получения значения переменной $module, нужно сделать
следующее:
$module = $_GET[
'module'
];
Теперь в переменной $module содержится значение этой переменной
переданной через строку браузера, но извлеченное из переменной $_GET.
Работа с $_POST в php ничем не отличается от работы с $_GET – это такой же ассоциированный массив что и $_GET.
ISSET - определяет, установлена ли
переменная. Возвращает TRUE, если var
существует;
иначе FALSE.
|
$_REQUEST
$_REQUEST — Переменные HTTP-запроса
Описание
Ассоциативный массив (array), который по умолчанию содержит
данные переменных $_GET, $_POST и $_COOKIE.
|
mysql_query() посылает запрос активной базе данных сервера, на
который ссылается переданный указатель.
Только для запросов SELECT, SHOW, EXPLAIN,
DESCRIBE, mysql_query() возвращает указатель на результат
запроса, или FALSE если запрос не был выполнен.
В остальных случаях (INSERT, UPDATE, DELETE,
DROP, и т.п.), mysql_query() возвращает TRUE в случае успешного запроса и FALSE в случае ошибки. Значение не равное FALSE говорит о том, что запрос был выполнен успешно.
Он не говорит о количестве затронутых или возвращённых рядов. Вполне возможна
ситуация, когда успешный запрос не затронет ни одного ряда.
mysql_result — Возвращает данные результата запроса.
string mysql_result ( resource $result , int $row [, mixed $field = 0 ] )
|
Указания к выполнению задания
10.
Запустите Денвер.
11.
Созданная вами база данных с помощью phpMyAdmin
хранится в папке C:\WebServers\usr\local\mysql-5.5\data в виде папки с файлами под именем вашей
БД. Папку можно копировать и вставлять в папку другого сервера.
12.
Чтобы создать web-страницу,
позволяющую пользователю работать с базой, необходимо наличие базы, заполненной
записями.
Физическая модель базы данных «primer», таблица «lich_dan»:
Записи
в таблице «lich_dan»:
- Выборка
данных из базы и размещение их на странице.
На
странице необходимо разместить кнопку (в данном примере «Показать»), по нажатию
на которую в таблице на странице будут выводится данные из базы.
Выборка
данных производится SQL-запросом «select ntab, Familiya, imya, otch from lich_dan», записанном в php-коде.
Листинг страницы:
<html>
<head>
<title>vibor_iz_bazi</title>
</head>
<body>
<h3> Личные данные
студентов</h3>
<table border='0'>
<tr><td valign='top'>
<form action="vibor_iz_bazi.php"
method="post">
<table border="0">
<tr>
<td><button
onclick="javascript:parent.location.replace('http://localhost/vibor_iz_bazi.php')">Выход</button></td>
<td><input type='submit' value='Показать'name='pokaz'></td>
</tr>
</table></form></td><td> 
          </td>
<td valign='top'>
<table border='1' >
<tr><td width='10'align='center'><b>№_таб</b></td>
<td align='center'width='40'><b>Фамилия</b></td>
<td align='center'width='40'><b>Имя</b></td>
<td align='center'width='40'><b>Отчество</b></td></tr>
<?
if (isset($_REQUEST['pokaz'])){
MySQL_connect('localhost','root','');
MySQL_select_db('primer')or die('нет такой базы');
$select=MySQL_query ("select ntab, Familiya,
imya, otch from lich_dan");
while ($rows=MySQL_fetch_assoc($select))
{
echo ("<tr>\n");
echo( "<td> $rows[ntab]</td>\n");
echo( "<td>
$rows[Familiya]</td>\n");
echo( "<td> $rows[imya]</td>\n");
echo( "<td> $rows[otch]</td>\n");
echo("</tr>\n");
}
}
?>
</table>
</td></tr>
</table>
</body>
</html>
- Удаление
данных из базы.
На странице будет отображаться таблица, в которую данные выбираются из
базы по нажатию на кнопку. Каждая строка таблицы в 5 столбце имеет ссылку: <a
href='vibor_iz_bazi.php?delete=$rows[ntab]'><img
src='korr.gif'></a>. Ссылка
ссылается на этот же документ ('vibor_iz_bazi.php),
при этом в ссылке указано поле delete, которое содержит значение =$rows[ntab]'(номер табельный из соответствующей строки
таблицы). Данное значение при переходе по ссылке будет помещено в массив
$_REQUEST под индексом [delete].
При обнаружении в массиве $_REQUEST непустого поля
delete (if (isset($_REQUEST['delete'])))
удалится строка с номером табельным, соответствующим номеру, переданному в '$_REQUEST[delete]'. Таким образом, мы имеем ссылку, при
нажатии на которую отправляется запрос в базу данных на удаление той записи,
номер табельный которой соответствует номеру табельному строки со ссылкой
таблицы на странице.
Листинг страницы:
<html>
<head>
<title>vibor_iz_bazi</title>
</head>
<body>
<h3> Личные данные студентов</h3>
<table border='0'>
<tr><td valign='top'>
<form
action="vibor_iz_bazi.php" method="post">
<table
border="0">
<tr><td>
<button
onclick="javascript:parent.location.replace('http://localhost/vibor_iz_bazi.php')">
Выход</button></td>
<td><input
type='submit' value='Показать'name='pokaz'></td></tr>
</table></form></td>
<td>           
</td>
<td valign='top'>
<table border='1' >
<tr><td
width='10'align='center'><b>№_таб</b></td>
<td
align='center'width='40'><b>Фамилия</b></td>
<td
align='center'width='40'><b>Имя</b></td>
<td
align='center'width='40'><b>Отчество</b></td>
<td
align='center'width='40'><b>Действие</b></td></tr>
<? if
(isset($_REQUEST['delete'])){
MySQL_connect('localhost','root','');
MySQL_select_db('primer')or die('нет такой базы');
MySQL_query ("delete
from lich_dan where ntab='$_REQUEST[delete]'");
}?>
<? if
(isset($_REQUEST['pokaz'])){
MySQL_connect('localhost','root','');
MySQL_select_db('primer')or
die('нет такой базы');
$select=MySQL_query
("select ntab, Familiya, imya, otch from lich_dan");
while
($rows=MySQL_fetch_assoc($select))
{ echo
("<tr>\n");
echo( "<td>
$rows[ntab]</td>\n");
echo( "<td>
$rows[Familiya]</td>\n");
echo( "<td>
$rows[imya]</td>\n");
echo( "<td>
$rows[otch]</td>\n");
echo( "<td>
<a href='vibor_iz_bazi.php?delete=$rows[ntab]'><img
src='korr.gif'></a></td>\n");
echo("</tr>\n");}}?>
</table></td></tr></table></body></html>
- Сохранение записей в базу данных.
Содержимое
БД «primer» таблицы «lich_dan»:
На
странице необходимо разместить форму с полями для ввода соответствующих
сведений и кнопку, по нажатию на которую будет производиться запись:
Заполнение
полей формы:
Проверьте
состояние базы данных после выполнения регистрации:
Листинг
страницы добавления данных в базу:
<html>
<head>
<title>registration</title>
</head>
<body>
<?php
mysql_connect("localhost",
"root", "");
MySQL_select_db('primer')or
die('нет такой базы');
if
(isset($_GET['submit']))
{
$ntab =
$_GET['ntab'];
$fam =
$_GET['fam'];
$name
= $_GET['name'];
$otch
= $_GET['otch'];
mysql_query("INSERT
INTO lich_dan SET ntab='". $ntab."', Familiya='". $fam . "', imya='". $name . "', otch='". $otch
."'");
$message
= "Регистрация прошла успешно";
}
?>
<h1> Регистрация
</h1>
<form
method="GET" action='registration.php'>
<table border='0'>
<tr><td>Идентификатор</td><td> <input
name="ntab" type="text"></td><br></tr>
<tr><td>Фамилия</td><td> <input
name="fam" type="text"></td><br></tr>
<tr><td>Имя</td> <td><input name="name"
type="text"></td><br></tr>
<tr><td>Отчество</td><td> <input
name="otch" type="text"></td><br></tr>
<tr><td></td><td><input
name="submit" type="submit" value="Зарегистрироваться">
</td></tr>
</table>
</form>
<? echo
"<h4>" . $message . "</h4>";
?>
</body>
</html>
- Обновление
данных в базе производится аналогично остальным операциями с базой данных.
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.