Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Веб программирование.doc
Скачиваний:
0
Добавлен:
02.02.2020
Размер:
6.88 Mб
Скачать

Организации работы с данными

Язык SQL был специально раз­работан для за­просов и получения данных из таблиц БД. Класси­ческий пример эффективного при­менения SQL-запросов – использо­вание условия WHERE в синтаксисе SQL.

<?php

$statement = "SELECT name, phone FROM samp_table";

$statement .= " WHERE id='5'";

Данный код более эффективен, чем поиск по БД с использованием PHP. C ростом БД резко па­дает скорость работы скриптов. По­лучив нужную SQL-выборку, используют PHP для вывода результатов:

<?php

if (@sql_num_rows ($result) ! = 1) {

die ("Получено неверное количество рядов");

}

$row = @sql_fetch_array ($result);

print "Имя: $row[name]\n<br>\n";

print "Телефон: $row[phone]\n<br>\n";

?>

Для сортировки результатов рекомендуется применять синтаксис SQL ORDER BY, а не PHP-функцию ksort(). Сортировка средствами SQL намного быстрее, чем в PHP.

<?php

$statement = "SELECT name, email, phone FROM some_table ";

$statement .= "WHERE name IS LIKE '%baggins' ORDER BY name";

?>

6.6. Передача данных от клиента к серверу и обратно по протоколу http

Протокол HTTP передачи гипертекстовых данных основывается на запросах/ответах. Запрос создается браузером клиента. Когда пользователь набирает в браузере адрес: http://bsu.by:80/my.php, вот что при этом происходит:

Браузер разбирает URL-адрес и определяет действие:

1. Использовать протокол HTTP.

2. Извлечь запрошенный ресурс с компьютера на bsu. by.

3. Получить информационный ресурс, известный, как /my.php.

На основе данной информации создается запрос HTTP в следующей форме: метод запроса, URI, версия протокола, сообщение, содержащее управляющую информацию запроса, информацию о клиенте и тело сообщения. Запрос(Request) выглядит так:

GET /my.php HTTP/1.1

Accept: image/gif, image/png, image/jpeg, */*

Accept-Language: en-us

Accept-Encoding: gzip, deflate

User-Agent: Mozilla/4.0 (compatible; MSIE 8.0;

Windows XP; .NET CLR 1.1.4322)

Host:bsu.by

Connection: Keep-Alive

Вот что эти строки значат:

GET – метод HTTP: "Дай информацию для скрипта в /mу.php и вышли ее, используя протокол HTTP 1.1".

Accept – "понимаю графическую информацию в форматах".

Accept-Language – "язык – английский, американский".

Accept-Encoding – "понимаю типы сжатия gzip и deflate".

User-Agent – "тип браузера – IE 8, выполняющийся под управлением Windows XP".

Host – "доставь информацию для скрипта /my.php компьютера на хосте bsu.by".

Connection: Keep-Alive – "держи подключение HTTP открытым, пока браузер не закроет его". Это повышает производительность, без Keep-Alive веб-страница будет иметь множество под­ключений.

Когда Web-сервер получает подобный запрос, он должен просмот­реть информацию на сервере, которая представлена для /my. php.

В конце запроса помещается его тело.

Сервер отвечает на запрос сообщением, содержащим строку статуса (включая версию протокола и код статуса – успех или ошибка), за которой следует MIME-подобное сообщение, включающее информацию о сервере, метаинформацию о содержании ответа и само тело ответа. Ответ (response) сервера посылается клиенту (браузеру) в виде:

НТТР/1.1 200 0К

Date: Моn, 08 Dec 2012 16:46:40 GMT

Server: Apache/1.3.27 (Unix) mod_throttle/3.1.2 PHP/5.3.2

X-Powered-By: PHP/4.3.2

X-Accelerated-By: PHPA/1.3.3r2

Connection: close

Content-Type: text/html; charset = utf-8

<html lang = "en-US" xml:lang = "en-US" «nlns = "http://www.w3.org/1999/xhtml">

<head>

<script>

HTTP-ответ состоит из двух частей. Вначале идет порция сведений о самой запрошенной информации – заголовок ответа (response header). Затем следует пустая строка и далее – сама запрошенная информация. Эта вторая часть называется телом (body). Вот что означают части заголовка:

HTTP/1.1 – первая строка сообщает клиенту, что информация будет отправлена по протоколу HTTP версии 1.1. Код 200 состояния HTTP означает: «Все хорошо, документ найден и будет отправлен».

Date – сообщает клиенту дату, установленную на сервере, с которого поступает информация. Время GMT, т. е. по Гринвичу.

Server – тип сервера, предоставляющего информацию.

Connection – сообщает клиенту, что соединение будет закрыто после того, как сервер завершит отправку информации.

Content-Type – сообщает клиенту, какой тип содержимого будет отправлен. В дополнение также указывается набор символов.