Анатолий Мотев СанктПетербург бхвпетербург 2006 удк 681 06 ббк 32. 973. 26018. 2 М85
Скачать 4.25 Mb.
|
#Подключаем файл для соединения с сервером и выбора БД require "dbconnect.php"; #Проверяем отправку формы и начинаем обработку данных if(isset($_POST['send'])) { #Формируем запрос на добавление записи в таблицу "address" $query1="insert into address values('', '".$_POST['addr']."','".$_POST['phone']."')"; $res_id1=mysql_query($query1); /* Выбираем номер адреса, который мы добавили. Он понадобится нам для формирования следующего запроса */ $query2="select max(id_addr) from address"; $res_id2=mysql_query($query2); #получаем номер адреса в масиив $addr_mas $addr_mas=mysql_fetch_row($res_id2); /* Теперь номер адреса известен, нам остается лишь добавить запись в таблицу reader */ $query3="insert into reader values('', '".$_POST['name']."','".$addr_mas[0]."')"; $res_id3=mysql_query($query3); } #Выводим данные по читателям echo "
Óðîê 16. Îáðàáîòêà ðåçóëüòàòîâ çàïðîñà 179 Рис. 16.1. Список читателей Рис. 16.2. Результат выполнения сценария ÓÐÎÊ 17 Ïîëó÷åíèå äàííûõ èç ôîðìû Данные из формы мы получали, используя конструкцию $_POST[' имя_поля'] $_POST — это глобальный ассоциативный массив (хэш), в который помеща- ются все значения, переданные из формы с помощью метода POST . При ис- пользовании метода GET нам доступен массив $_GET Можно использовать и альтернативный способ приема данных формы. Для этого в файле настройки PHP (PHP.INI) нужно установить register_ globals=On . Это позволит регистрировать входные параметры непосредствен- но в переменных. Например, если какое-либо поле формы имело имя address , то будет зарегистрирована переменная $address , содержащая значение этого поля. Это значительно удобнее первого варианта. Но данная настройка несет определенный риск для системы безопасности, т. к. получается, что клиент может устанавливать переменные в вашем сценарии. Поэтому разработчики PHP рекомендуют отключать эту настройку: register_globals=Off Соответственно, вся обработка данных начинается при условии, что установ- лен параметр 'send' : if(isset($_POST['send'])) Это означает, что пользователь нажал кнопку Добавить и отправил данные. На самом деле проверка по имени кнопки отправки ( submit ) не очень надеж- на. Иногда, заполнив какую-либо форму, пользователь нажимает клавишу Óðîê 17. Ïîëó÷åíèå äàííûõ èç ôîðìû 181 То есть форму можно описать примерно так: Это поле не выводится браузером, т. е. пользователь не подозревает о его су- ществовании, но данные из этого поля ( имя_поля = значение_поля ) передаются вне зависимости от того, каким образом была отправлена форма. Имя и зна- чение этого поля вы устанавливаете произвольно. Вы также можете передавать параметры сценарию через URL. То есть можно сформировать гипертекстовые ссылки на странице и, добавив в них парамет- ры, указывать сценарию, что он должен выполнить. PHP преобразует пара- метры в переменные с именами параметров. Например, можно передать па- раметры так: http://www.mywebsite.ru/script.php?parameter=value Если нужно передать несколько параметров, разделите их символом '&' http://www.mywebsite.ru/script.php?parameter1=value¶meter2=value Давайте рассмотрим простой пример сценария, который будет выполнять различные действия в зависимости от того, какую ссылку нажмет пользова- тель. Откройте текстовый редактор, наберите текст листинга 17.1 и сохраните его в файле с именем TEST_LINK.PHP в корневом каталоге сервера. Листинг 17.1 |