Опубликован: 24.12.2006 | Уровень: для всех | Доступ: платный
Урок 15:

Создание страниц для обновления

< Урок 14 || Урок 15: 12345 || Урок 16 >
  1. Выделите кнопку Submit и с помощью панели Server Behaviors (Модели поведения серверов) прикрепите к ней серверную модель поведения Update Record (Обновление записи).

    Для обновления записей применяется специальная инструкция SQL – UPDATE. В предыдущих уроках применялись SQL-инструкции INSERT и SELECT, но UPDATE еще не применялась. Серверная модель поведения генерирует весь код запроса автоматически, однако следует знать синтаксис инструкции UPDATE, который выглядит следующим образом:

    UPDATE tbl_table
    SET fieldname = 'New value for this field'
    WHERE keyID = '123456';

    При обновлении записи указывается таблица. Затем при помощи предложения SET задается новое значение. Наконец, для определения строки применяется предложение WHERE. Предложение SET позволяет одновременно присвоить значения нескольким полям. Для этого следует отделить пары имен и значений друг от друга запятыми.

    Примечание.Если инструкция UPDATE применяется без предложения WHERE, определяющего строку, будут изменены значения в каждой строке.

    В процессе разработки приложений (пусть и не в этом уроке) нередко возникает необходимость внести изменения в SQL-код, поэтому важно знать SQL не хуже, чем технологии разработки динамичных сайтов.

    Версии диалогового окна Update Record (Обновление записи) для ASP, ColdFusion и PHP достаточно сильно различаются, поэтому лучше описать их по отдельности.

  2. Только пользователям ASP. В диалоговом окне Update Record выберите следующие настройки: Connection (Соединение) – conn_newland; Table to update (Обновляемая таблица) – tbl_users; Select record from (Выбор записи из) – rs_registeredUsers; Unique key column (Столбец с уникальным ключом) – userID (флажок Numeric [Числовой] должен быть установлен); After updating, go to (После обновления перейти к) — admin_addUser_master.asp. В области Form Elements (Из элементов) должен содержаться текст: userGroup updates column "userGroup" (Text).

    На основе этой информации Dreamweaver создаст SQL-запрос, который находит в таблице tbl_users запись, которой соответствует первичный ключ, извлеченный при помощи запроса rs_registeredUsers, после чего помещает в поле userGroup новое значение, содержащееся в элементе формы userGroup.

    После нажатия кнопки Submit пользователи переводятся на страницу admin_addUser_master.asp, на которой содержится список пользователей и групп, к которым они относятся. Этот переход позволяет тут же убедиться в том, что изменения вступили в силу (см. рис. вверху следующей страницы).

    Только пользователям ColdFusion и PHP. В диалоговом окне Update Record (Обновление записи) выберите следующие настройки: Data Source (Источник данных) – newland; Update table (Обновляемая таблица) – tbl_users. Убедитесь, что в области Columns (Столбцы) содержатся следующие операторы: 'userID' Selects Record Using 'FORM.userID' as 'Numeric' и userGroup Gets Value From ‘FORM.userGroup’ as ‘Text’. Во всех остальных записях присутстсвует текст Does Not Get a Value. В поле After updating, go to (После обновления перейти к) в нижней части диалогового окна укажите файл admin_addUser_master.cfm . Только пользователям ColdFusion: флажок Pass original query string (Передать первоначальную строку запроса) должен быть снят.

    На основе этих данных Dreamweaver создаст SQL-запрос, который находит в таблице tbl_users запись, которой соответствует первичный ключ, хранящийся в элементе формы userID (скрытое поле), после чего помещает в поле userGroup новое значение, содержащееся в элементе формы userGroup.

    После нажатия кнопки Submit пользователи переводятся на страницу admin_addUser_master.asp, на которой содержится список пользователей и групп, к которым они относятся. Этот переход позволяет тут же убедиться в том, что изменения вступили в силу.

  3. Сохраните страницу и загрузите ее на сервер. Протестируйте набор страниц, начиная с основной.

    Страницы позволяют выбрать пользователя, изменить его статус на детальной странице и проследить изменения после повторной загрузки основной страницы. К этому моменту приложение функционирует полностью. Осталась лишь проблема, касающаяся версии приложения, созданного при помощи ASP, а для пользователей ColdFusion и PHP урок окончен.

    Данные доступа к административному разделу:

    адрес электронной почты: zfrome@starknet.com ;

    пароль: hypochondriac.

    Пользователям ASP. После первой проверки приложения выполните ее еще раз. При повторном тестировании появится сообщение об ошибке. Найти источник проблемы несложно – достаточно взглянуть на URL-адрес. По непонятным причинам в строке запроса содержатся два различных значения userID. Эта ошибка вызвана работой интерпретатора ASP. Если нажать кнопку браузера Back (Назад ), на основной странице снова будет только один экземпляр переменной userID. Однако он не должен быть там. Основная страница должна пересылать переменную URL-адреса, но не может иметь собственную. Почему же это происходит? После нажатия кнопки Submit на детальной странице, на основную страницу пересылается переменная URL-адреса. Флажок Pass Original Query String (Передать первоначальную строку запроса) (применяемый в случае с ColdFusion) позволяет разрешить или запретить передачу переменной URL-адреса обратно. Тем не менее, при использовании ASP Dreamweaver не дает подобного выбора и пересылает переменную обратно вне зависимости от замысла разработчика.

    Решить эту проблему при помощи диалогового окна или Мастера невозможно. Необходимо самостоятельно исправить код.

  4. Только пользователям ASP. В документе admin_addUser_detail.asp переключитесь в режим Code (Код). Найдите комментарий append the query string to the redirect URL. Добавьте апостроф в начале каждой из семи последующих строк, чтобы закомментировать их.

    В моем случае ошибочный код начинается со строки 81. Если во время поиска возникают затруднения, следует в меню Edit (Правка) выполнить команду Find (Найти).

    В коде содержится вложенная пара условных конструкций. Поскольку строку запроса пересылают именно они, следует заблокировать этот участок кода. Альтернативный вариант – просто удалить его, однако при этом восстановить его впоследствии будет невозможно.

    Следует убедиться в том, что третий оператор End If не был случайно закомментирован, поскольку он принадлежит к родительскому (внешнему) блоку кода, а не к участку, который требуется заблокировать.

    После того, как ошибочный участок кода закомментирован, следует снова несколько раз протестировать приложение. На этот раз все должно работать нормально.

Резюме

В этом уроке вы узнали, как:

  • на предварительном этапе создавать статическую основу для страниц;
  • планировать данные, которые будут использоваться в наборе из основной и детальной страниц;
  • создавать набор записей, достаточный для работы обеих страниц;
  • добавлять объект приложения Master-Detail Page Set (Набор основной и детальной страниц) с применением данных из набора записей;
  • добавлять формы на детальную страницу;
  • применять серверную модель поведения Update Record (Обновление записи);
  • вносить исправления в код ASP для обеспечения совместной работы серверной модели поведения Update Record и объекта приложения Master-Detail Page Set.
< Урок 14 || Урок 15: 12345 || Урок 16 >
Екатерина Мезенцева
Екатерина Мезенцева
Россия
Маргарита Туктарова
Маргарита Туктарова
Соединенное Королевство, London, kingston university, 2012