Главная страница

Анатолий Мотев СанктПетербург бхвпетербург 2006 удк 681 06 ббк 32. 973. 26018. 2 М85


Скачать 4.25 Mb.
НазваниеАнатолий Мотев СанктПетербург бхвпетербург 2006 удк 681 06 ббк 32. 973. 26018. 2 М85
Дата12.10.2022
Размер4.25 Mb.
Формат файлаpdf
Имя файлаuroki_mysql_samouchitel_3642745.pdf
ТипКнига
#730460
страница12 из 14
1   ...   6   7   8   9   10   11   12   13   14


#Подключаем файл для соединения с сервером и выбора БД 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 "\n"; echo "\n";
#Посылаем запрос на выборку данных
$res_id=mysql_query("select reader, address, phone from reader, address where reader.id_addr=address.id_addr ");

×àñòü IV. PHP è MySQL
178
#Формируем строки таблицы while($reader_mas=mysql_fetch_row($res_id))
{ echo "




\n";
}
?>
ФамилияАдресТелефон
$reader_mas[0] $reader_mas[1] $reader_mas[2]


Имя читателя

Адрес читателя

Телефон




Óðîê 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
1   ...   6   7   8   9   10   11   12   13   14


написать администратору сайта