Изменение записей в адресной книге
Теперь, когда вы имеете информацию о различных адресатах в вашей базе данных, вам необходим
простой способ их изменения. Люди, информация о которых хранится в базе данных, могут переехать на
другое место жительства, изменить свой адрес электронной почты, сменить место работы и т.п.
Кроме того, вы сами можете допустить ошибку при вводе той или иной информации, поэтому механизм
внесения изменений в записи таблицы просто необходим. В этой главе вы узнаете, как сделать следующее:
создать административный интерфейс для изменения записей;
создать сценарий для обновления записей в таблице;
потребовать основанной на сессии аутентификации перед тем, как сценарий просмотрит или обновит записи.
Создание формы для выбора записей
Итак, мы имеем определенное количество записей в таблице my_contacts, и нам нужен быстрый
способ выбора одной определенной записи для ее изменения. Сценарий, который мы создадим в этом знакомстве,
будет создавать открывающийся список всех людей, информация о которых хранится в таблице. Из
этого списка вы сможете выбрать одну строку для редактирования записи.
Создайте с помощью текстового редактора новый файл.
Начните блок РНР:
Чтобы начать сессию, введите строку:
Чтобы начать оператор if. . .else для проверки значения переменной $valid, введите код:
Если значение переменной не равно yes, то это значит, что пользователь не прошел аутентификацию и
его нужно перенаправить на страницу с регистрационной формой выйти из сценария:
Чтобы зарегистрировать переменную сессии в случае, если пользователь зарегистрирован, и закончить
оператор if. . .else, введите код:
Чтобы создать две переменные для хранения имени базы данных и имени таблиц, введите строки:
Чтобы создать переменную для хранения результата функции mysql_connect ( ) используя
символ @ для подавления предупреждений и функцию die ( ) - в случае неудачного
завершения функции, введите код:
Чтобы создать переменную для хранения результата функции mysql_select_db ( ) используя
символ @ для подавления предупреждений и функцию die ( ) - в случае неудачного завершения функции, в
ведите код:
Чтобы создать переменную для хранения оператора SQL, который выберет из таблицы идентификационный
номер id, имя и фамилию лица, введите строку:
Чтобы создать переменную для хранения результата функции mysql_query ( ), используя символ @
для подавления предупреждений и функцию die( ) - в случае неудачного завершения функции, введите код:
Чтобы начать цикл while, который будет создавать массив с именем $row для каждой записи в
полученном результате $result, введите код:
Чтобы получить отдельные элементы записи с присвоенными им понятными именами, введите строки:
Чтобы создать переменную с именем $option_block для хранения отдельных элементов в открывающемся
списке, введите строку:
Закройте оператор цикла:
Чтобы создать переменную с именем $display_block для хранения формы и начать форму с методом
post и действием show_modcontact.php, введите код:
Чтобы создать подпись для открывающегося списка, введите:
Чтобы начать открывающийся список, введите код:
Чтобы поместить строку $option_block внутрь тегов <select></select> для формирования
списка, который должен содержать, по крайней мере, один элемент, введите:
Чтобы завершить создание открывающегося списка, введите тег:
Чтобы добавить кнопку с надписью для передачи формы, введите строку:
Чтобы закрыть форму, строку и блок РНР, введите код:
Чтобы добавить блок HTML с заголовками, введите код:
Чтобы отобразить содержимое переменной $display_block, введите код РНР:
Чтобы создать ссылку для возврата в главное меню, введите строку:
Чтобы закрыть блок HTML, введите код:
Сохраните созданный файл с именем pic_modcontact.php в папке для документе вашего Web-сервера.
В следующем упражнении вы создадите форму для внесения изменений в записи, которая очень похожа
на форму для добавления записей.
Создание формы для изменения записей
Форма для изменения записей основана на форме для добавления записей, которую вы создали в
предыдущей главе. Разница между ними в том, что форма для изменения записей сразу при открытии в
полях ввода должна содержать данные, которые хранятся в базе данных для выбранного адресата.
Другими словами, вы должны увидеть данные об адресате перед тем, как начать их редактировать.
Создайте с помощью текстового редактора новый файл.
Начните РНР-блок:
Чтобы начать оператор if. . .else для проверки обязательной переменной (в этом случае это
идентификационный номер), введите код:
В случае, если переменная $id не имеет значения, т.е. ничего не выбрано, пользователь будет
направлен на страницу, содержащую форму для выбора адресата, и выполнения сценария будет прервано:
Чтобы начать сессию, если значение $id существует, и завершить оператор if. . .else, введите код:
Чтобы начать оператор if. . .else для проверки значения переменной $valid, введите код:
Если значение переменной не равно yes, то это значит, что пользователь не прошел аутентификацию и
его нужно перенаправить на страницу с регистрационной формой и выйти из сценария.
Введите код:
Чтобы зарегистрировать переменную сессии в случае, если пользователь зарегистрирован, и закончить оператор
if. . .else, введите код:
Чтобы создать две переменные для хранения имени базы данных и имени таблицы, введите строки:
Чтобы создать переменную для хранения результата функции mysql_connect ( ), используя символ @
для подавления предупреждений и функцию die ( ) - в случае неудачного завершения функции, введите код:
Чтобы создать переменную для хранения результата функции mysql_select_db( ), используя символ @
для подавления предупреждений и функцию die( ) - в случае неудачного завершения функции, введите код:
Чтобы создать переменную для хранения оператора SQL, введите код:
Чтобы создать переменную для хранения результата функции mysql_query( ), используя символ @
для подавления предупреждений и функцию die ( ) - в случае неудачного завершения функции, введите код:
Чтобы создать оператор цикла while, который создает массив с именем $row для каждой записи в
полученном результате $result, введите код:
Чтобы получить значение каждого элемента массива отдельно и присвоить им имена, введите код:
Чтобы завершить оператор цикла, введите:
Теперь мы имеем текущие значения полей выбранной записи, которые мы будем использовать для
отображения в полях формы.
Чтобы закрыть блок РНР, введите код:
Чтобы начать HTML-блок для построения формы для изменения записи, введите код:
Чтобы начать форму, использующую метод post и действие do_modcontact.php введите строку:
Чтобы создать скрытое поле для хранения значения переменной $id, введите строку:
Чтобы начать таблицу, которая поможет лучше расположить поля формы, введите строку:
Чтобы создать первую строку таблицы с заголовками двух столбцов, введите код:
Создайте новую строку таблицы и ячейку, содержащую поле ввода с подписью ввода имени:
Создайте в той же самой ячейке поле ввода с подписью для ввода фамилии:
Создайте в той же самой ячейке поле ввода с подписью для ввода первой строки адреса:
Создайте в той же самой ячейке поле ввода с подписью для ввода второй строки адреса:
Создайте в той же самой ячейке поле ввода с подписью для ввода третьей строки адреса:
Создайте в той же самой ячейке поле ввода с подписью для ввода почтового индекса:
Создайте в той же самой ячейке поле ввода с подписью для ввода страны и закройте ячейку HTML-таблицы:
В новой ячейке HTML-таблицы создайте поле ввода с подписью для ввода номера домашнего телефона:
В той же самой ячейке создайте поле ввода с подписью для ввода номера служебного или сотового телефона:
В той же самой ячейке создайте поле ввода с подписью для ввода адреса электронной почты:
В той же самой ячейке создайте поле ввода с подписью для ввода дня рождения, закройте ячейку и строку
HTML-таблицы:
Чтобы начать новую строку HTML-таблицы с объединенными ячейками, содержащими кнопку передачи формы
с надписью и ссылку для возврата к административному меню, введите код:
Чтобы закрыть ячейку, строку и саму таблицу HTML, введите код:
Чтобы закрыть форму и завершить HTML-документ, введите код:
Сохраните созданный файл с именем show_modcontact.php в папке для документов вашего Web-сервера.
В следующем упражнении вы создадите сценарий, который получит данные из формы, создаст оператор SQL и
обновит запись в базе данных.
Создание сценария для изменения записи
Сценарий, который мы создадим, будет обновлять запись в таблице my_contacts, используя
значение переменной $id в качестве первичного ключа (каковым оно и является).
Создайте с помощью текстового редактора новый файл.
Начните блок РНР:
Чтобы начать оператор if. . .else для проверки обязательных полей (в нашем случае это имя и
фамилия персоны), введите код:
Вы можете использовать любое количество обязательных полей по вашему усмотрению.
В случае, если хотя бы одно из обязательных полей ввода формы не заполнено, пользователь будет
направлен на страницу, содержащую форму, и выполнение сценария будет прервано:
Чтобы начать сессию, если обязательные поля имеют значения, и завершить оператор if. . .else, введите код:
Чтобы начать оператор if. . .else для проверки значения переменной $valid, введите код:
Если значение переменной не равно yes, то это значит, что пользователь не прошел аутентификацию и
его нужно перенаправить на страницу с регистрационной формой и выйти из сценария:
Чтобы зарегистрировать переменную сессии в случае, если пользователь зарегистрирован, и закончить
оператор if. . .else, введите код:
Чтобы создать две переменные для хранения имени базы данных и имени таблицы, введите строки:
Чтобы создать переменную для хранения результата функции mysql_connect ( ), используя
символ @ для подавления предупреждений и функцию die ( ) - в случае неудачного завершения
функции, введите код:
Чтобы создать переменную для хранения результата функции mysql_select_db( ), используя
символ @ для подавления предупреждений и функцию die( ) - в случае неудачного завершения
функции, введите код:
Чтобы создать оператор SQL, который использует ключевые слова UPDATE и SET для обновления
значений полей записи, введите код:
Чтобы создать переменную для хранения результата функции mysgl_query ( ), иcпользуя символ
@ для подавления предупреждений и функцию die ( ) - в случае неудачного завершения
функции, введите код:
Закройте блок РНР:
Чтобы начать блок HTML, введите код:
Чтобы вывести сообщение, подтверждающее успешное обновление записи, введите код:
Далее отобразим информацию о введенной записи, используя ту же раскладку страницы, что и в
предыдущем упражнении. Но в отличие от формы, страница будет содержать вместо полей ввода их
значения, введенные в форме.
Чтобы начать таблицу, которая поможет лучше разместить информацию, введите строку:
Так же, как и в предыдущем знакомстве, таблица будет содержать два столбца с загoловками.
Чтобы создать первую строку с заголовками, введите код:
Чтобы создать новую строку таблицы и ячейку, содержащую подпись и значение имени адресата, введите код:
В той же самой ячейке отобразите подпись и фамилию:
В той же самой ячейке отобразите подпись и первую строку адреса:
В той же самой ячейке отобразите подпись и вторую строку адреса:
В той же самой ячейке отобразите подпись и третью строку адреса:
В той же самой ячейке отобразите подпись и значение почтового индекса:
В той же самой ячейке отобразите подпись и значение страны и закройте ячейку HTML-таблицы:
Чтобы начать новую ячейку HTML-таблицы и отобразить в ней подпись и значение номера домашнего телефона,
введите код:
В той же самой ячейке отобразите подпись и значение номера служебного или сотoвого телефона:
В той же самой ячейке отобразите подпись и значение адреса электронной почты:
В той же самой ячейке отобразите подпись и значение даты дня рождения, закройте ячейку и строку
HTML-таблицы:
Чтобы начать новую строку HTML-таблицы с объединенными ячейками, содержащую ссылку для возврата к
административному меню, введите код:
Чтобы закрыть ячейку, строку и саму таблицу HTML, введите строки:
Чтобы закрыть форму и завершить HTML-документ, введите строки:
Сохраните созданный файл с именем do_modcontact.php в папке для документов вашего Web-сервера.
В следующем упражнении вы измените некоторые записи в таблице my_contacts.
Изменение записей в адресной книге
Теперь все готово, чтобы внести изменения в вашу адресную книгу. Если вы не закрывали окно вашего
браузера, то его рабочее окно должно содержать главное меню и вам не нужно заново проходить
аутентификацию. Если вы закрыли рабочее окно браузера, то выполните следующие действия:
Запустите свой Web-браузер, в поле ввода Адрес введите
http://localhost/contact_menu.php
и нажмите клавишу Enter.
В рабочее окно браузера будет загружена страница Система управления контактами (Рис. 14.1).
В поле ввода Имя пользователя введите admin.
В поле ввода Пароль введите abc 123.
Нажмите кнопку ОК. В рабочее окно браузера будет загружена страница
Система Управления контактами с главным меню (Рис. 14.3).
Щелкните мышью на ссылке Изменить контакт. В рабочее окно браузера будет загружена
страница Система управления контактами: Изменение Контакта (Рис. 16.1).
Рис. 16.1. Страница Система управления контактами: Изменение Контакта
Вы видите на странице открывающийся список Контакт, кнопку Выбрать и ссылку
Возврат к Главному Меню.
Из открывающегося списка Контакт выберите любую строку, чтобы внести изменения или исправления,
и нажмите кнопку Выбрать. В рабочее окно браузера будет загружена страница
Система управления контактами: Изменение Контакта с формой Изменение Контакта (Рис. 16.2).
Рис. 16.2. Страница Система управления контактами:
Изменение Контакта с формой Изменение Контакта
Как видите, все поля ввода таблицы имеют значения, которые хранятся в таблице базы данных для
выбранного адресата.
Измените произвольно любое из полей, например, мы введем в поле ввода Адрес (строка 3):
значение 15/1-10.
Нажмите кнопку Обновить. В рабочее окно браузера будет загружена страница Система управления
контактами: Контакт Обновлен (Рис. 16.3).
Рис. 16.3. Страница Система управления контактами: Контакт Обновлен
Загруженная страница содержит строку с подтверждением, что запись в таблице my_contacts была
успешно обновлена. Чтобы убедиться, что запись в таблице действительно изменена, выполните
следующие действия:
Щелкните мышью на ссылке Возврат к Главному Меню. В рабочее окно браузера будет загружена
страница Система управления контактами с главным меню (Рис. 14.3).
Щелкните мышью на ссылке Изменить контакт. В рабочее окно браузера будет загружена страница
Система управления контактами: Изменение Контакта (Рис. 16.1).
Из открывающегося списка Контакт выберите строку, для которой были произведены изменения,
и нажмите кнопку Выбрать. В рабочее окно браузера будет загружена страница Система управления контактами:
Изменение Контакта с формой Изменение Контакта и внесенными вами новыми данными (Рис. 16.4)
Рис. 16.4. Страница Система управления контактами: Изменение Контакта
с измененными данными
Чтобы вернуться к главному меню управления адресной книгой, щелкните мышью на
ссылке Возврат к Главному Меню.
В следующей главе вы разработаете административный сценарий для удаления некоторых записей из
таблицы базы данных. |