11.9.5. Передача данных другим приложениям

Внизу разделов должны быть ссылки. 1-я — название страны, с помощью которой осуществляется переход на profiles_detail.php. 2-я — переход к приложению с калькулятором tourprice.php. Но требуется передать им данные, чтобы приложения могли определить, с каким из разделов ознакомился пользователь во время перехода по ссылке.

Чтобы определить, о какой именно стране следует показывать информацию, приложение использует параметр URL-адреса countryID. Этот параметр появляется в тот момент, когда посетитель переходит по ссылке со страницы profiles.php. Для получения такого же эффекта следует прикрепить соответствующий параметр URL-адреса к ссылке на странице tours_detail.php.

Создание ссылки на приложение для расчета стоимости сложнее. На этой странице содержится динамически генерируемый список, в котором перечислены все путешествия. Но если посетитель просматривает описание путешествия Highlights of Italy, а затем по ссылке Расчет стоимости переходит на страницу с формой для расчета, он предполагает узнать стоимость тура Highlights of Italy (а не выбранного в списке по умолчанию Biking from Oxford to London).

396. Выделите динамический текст в конце Дополнительные сведения о стране. На панели Property Inspector прикрепите к нему ссылку, указав значение abc.

397. Не снимая выделение с динамического текста, на панели Bindings щелкните на countryID и выберите в списке Bind To пункт a.href, а после этого нажмите Bind. Значение countryID окажется прикрепленным к URL-адресу.

398. Не снимая выделение со ссылки, поместите курсор в самое начало поля Link – перед динамическим кодом, и введите profiles_detail.php?countryID=

399. Выделите слова Калькулятор дл расчета стоимости тура. В поле Link на панели Property Inspector введите abc. На панели Bindings выберите tourID, и в списке Bind To прикрепите его к атрибуту a.href. Нажмите Bind.

400. На панели инспектора свойств поместите курсор в начало строки Link и введите перед динамическим текстом следующий URL-адрес: tourprice.php?tourID=

401. Сохраните и закройте документ tours_detail.php

402. Откройте файл tourprice.php. На панели Bindings добавьте новую переменную URL  и присвойте ей имя tourID.

403. Щелкните на списке справа от надписи Название тура, чтобы выделить ее. На панели Property Inspector нажмите Dynamic.

404. В окне Dynamic List, Menu щелкните на значке с изображением молнии рядом с полем Select Value Equal To (Выбрать значение, равное) в нижней части диалогового окна. Откроется диалоговое окно Dynamic Data. В этом окне выберите пункт URL.tourID и дважды OK.

Объект списка определяется двумя основными видами информации: надписью, которую видят посетители (в качестве надписей в данном случае используются названия путешествий) и ее значениями, которые пересылаются в составе переменных формы (в качестве значений применяются идентификаторы путешествий). В данном шаге выбранное значение (а, следовательно, и надпись) устанавливается равным полученному значению параметра URL-адреса.

405. Сохраните tourprice.php и загрузите ее на сервер. На панели Site выберите tours_detail.php и нажмите F12. Выберите любое путешествие и щелкните на ссылке с названием страны (которая приведет к соответствующему профилю), а затем на ссылке Калькулятор дл расчета стоимости тура (которая приведет на страницу с соответствующим названием путешествия, выбранным по умолчанию в меню формы). Но…

406. Не закрывая браузер, щелкните на ссылке Калькулятор дл расчета стоимости тура из любого раздела с описанием путешествия. Не вводя значения в поля Количество взрослых и Количество детей, нажмите кнопку Submit.

Запускается сценарий для проверки формы, и страница загружается снова – с сообщением об ошибке. Все работает правильно. Но в списке Название тура вновь выбран пункт Biking from Oxford to London. При повторной загрузке страницы параметр tourID пропадает, поэтому форма не может отобразить нужный тур и выводит первый запись из набора.

В идеале, сценарий проверки правильности заполнения формы, находящийся на странице tourprice_processor.php, при повторной загрузке страницы tourprice.php должен отправлять обратно и значение параметра tourID.

407. Закройте страницу tourprice.php и откройте tourprice_processor.php.

408. В режиме Code найдите следующий код:

header("Location: tourprice.php?error=notnumeric"

Этот участок кода отвечает за перенаправление на страницу tourprice.asp. Для улучшения работы приложения достаточно добавить еще один параметр.

409. Измените найденный код так, чтобы он выглядел следующим образом:

header("Location: tourprice.php?error=notnumeric&tourID=".$_POST['tourName']);

При перенаправлении на страницу tourprice он прикрепляет к запросу переменную URL-адреса tourID. Значение этой переменной равно значению переменной формы form.tourName, которое было выбрано в списке к моменту нажатия кнопки Submit. Как известно при загрузке страницы tourprice.php значение в списке по умолчанию выбирается на основе переменной URL-адреса tourID.

410. Сохраните все файлы, загрузите их на сервер и снова протестируйте.