Изменение записей в адресной книге

Теперь, когда вы имеете информацию о различных адресатах в вашей базе данных, вам необходим простой способ их изменения. Люди, информация о которых хранится в базе данных, могут переехать на другое место жительства, изменить свой адрес электронной почты, сменить место работы и т.п. Кроме того, вы сами можете допустить ошибку при вводе той или иной информации, поэтому механизм внесения изменений в записи таблицы просто необходим. В этой главе вы узнаете, как сделать следующее:

  • создать административный интерфейс для изменения записей;
  • создать сценарий для обновления записей в таблице;
  • потребовать основанной на сессии аутентификации перед тем, как сценарий просмотрит или обновит записи.
  • Создание формы для выбора записей

    Итак, мы имеем определенное количество записей в таблице 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. Страница Система управления контактами: Изменение Контакта с измененными данными
  • Чтобы вернуться к главному меню управления адресной книгой, щелкните мышью на ссылке Возврат к Главному Меню.
  • В следующей главе вы разработаете административный сценарий для удаления некоторых записей из таблицы базы данных.



    Hosted by uCoz