banner banner banner
DbfWebServer. Способ эффективной работы с таблицами DBFв среде Интернет
DbfWebServer. Способ эффективной работы с таблицами DBFв среде Интернет
Оценить:
Рейтинг: 0

Полная версия:

DbfWebServer. Способ эффективной работы с таблицами DBFв среде Интернет

скачать книгу бесплатно


Рис. 3.1. Экранная форма стартовой страницы dbf.html с элементами управления сервером dbfWebServer

Документация

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

– Manuel of dbfWebServer;

– Manuel of HTML4;

– xHarbour functions.

ссылка «Manuel of dbfWebServer» представляет данный вариант документа в электронном виде.

ссылка «Manuel of HTML4» переводит пользователя в документацию для разметки текста в среде Интернет HTML4 на русском языке в оригинальном представлении.

по ссылке «xHarbour functions» осуществляется переход к информационному блоку, который предоставляет доступ к документации xHarbour относительно функции в файловом виде.

Редактирование

Режим редактирования предназначен для работы со скриптами на расстоянии. Скрипты хранятся в виде файлов типа *.html. Эти файлы можно редактировать обычным редактором.

Другой способ редактирования этих файлов предлагается осуществлять через интерфейс системы. Переход к этому режиму работы находится по ссылке «HTML editor».

Если при входе в форму редактирования файлов список файлов оказывается пустым, следует кликнуть по заголовку таблицы, и список заполнится перечнем имён файлов, которые находятся в директории

/html/*.html

Количество записей в списке регулируется с помощью элементов управления « – » и «++». Нажимая тот или иной элемент, можно добиться токого количества записей в списке, которое наилучшим образом соответствует размеру зоны вывода.

Размер поля редактирования регулируется элементами управления по вертикали « – x++» и по горизонтали « – y++».

Сохранить введённые значения можно, нажав кнопку, на которой стоит знак «плюс».

Если требуется изменить интерфейс, можно изменить код соответствующих скриптов.

Запросы к серверу

Вот мы и подошли к сути задачи. А суть эта состоит в том, что серверу нужно посылать определённые запросы и получать необходимую информацию, запрошенную у сервера.

Здесь необходимо напомнить, что запросы к серверу строятся в виде блоков кода. Это обусловлено тем, что используется СУБД CLIPPER-xHarbour, которая ориентирована в данном случае на работу с блоками кода.

Например, следующий запрос к серверу, использующий свойства блока кода, будет выглядеть следующим образом:

src="http://localhost:4180/cb:='<table width=100%>», i:=1,DBFRUN00-> (dbgotop (), ixWhile (»! eof ()», ’cb+= [<tr> <td>] + str (i) + [<td>] +FieldGet (1) + [<td>] +FieldGet (2) + [<td width=100%>] + STRTRAN (FieldGet (3), [<], []),dbskip (),i++»)), cb»

Данный запрос заставляет сервер строить ответ, сразу содержащий непосредственно таблицу, данные и разметку, как показано на рис.3.2 в левой части формы.

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

http:// localhost:4180/ (123+4) /2

ответом будет вычисленный результат введённого математического выражения.

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

К серверу можно обращаться из скриптов, которые хранятся в файлах типа *.html.

С сервером можно общаться через библиотеку блоков кода, которая хранится в таблице DBFRUN00.dbf. В этом случае можно строить сложные алгоритмы обработки данных, осуществлять взаимодействие с другими серверами, программами и информационными ресурсами.

Рис. 3.2. Экранная форма запроса к таблице DBFRUN00, созданная с помощью скрипта dbfcodeblock.html

Рис. 3.3. Экранная форма запроса к таблице DBFRUN00, созданная с помощью скрипта PHP и базы данных MySQL

После нажатия кнопки «плюс» [+], которая отображена на экранной форме, представленной выше, соответствующий PHP-скрипт получает значения переменных $m, $id, $txt из пользовательской формы, как показано ниже, и переносит полученные значения в базу данных MySQL и таблицу DBFRUN00.dbf.

PHP-скрипт

$h=«localhost»;

$p=4180;

$page="http://".$h."/ixbase/e.php";

$sp=«ix=dbfrun00.rcve&naiblo=$m&alikey=$id&valblo=». urlencode (trim ($txt));

$np=strlen ($sp);

$fp=fsockopen ($h,$p,$errno,$errstr,10);

if (!$fp) {

echo «I can’t connect to $h»;

} else {

fputs ($fp,«POST $page HTTP/1.0

Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, application/x-icq, */*

Content-Type: application/x-www-form-urlencoded

User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 98)

Accept: */*

Referer: http://$h/

Host: $h

Content-Length:». $np.»

Pragma: no-cache

«.$sp);

$reply=«»;

while (!feof ($fp)) $reply.=fgets ($fp,256); fclose ($fp);

echo "$reply»;

Примечание. Запросы к серверу из HTML-скриптов передаются с помощью метода GET или POST.

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

Управляемые списки

Основной задачей создания динамических страниц для наших задач при помощи таблиц является формирование управляемых списков. На это следует обратить особое внимание.

Чаще всего в информационных системах в качестве пользовательской формы строится карточка со списком. Карточка может быть выполнена в виде списка, но сути карточки в данном случае это не меняет. Карточка представляет развёрнутую информацию об объекте, полный перечень данных об объекте находится рядом со списком. По списку можно перемещаться, выбирая, таким образом, объект для детального просмотра. Карточка представляет информацию о выбранном объекте в нужном виде и объёме и позволяет редактировать эти данные.

Данное общее описание более потробно будет представлено в разделе «Спецификации интерфейса списков v.1.0».

Блоки кода

Отличительной особенностью сервера является то, что используются блоки кода. Это обусловлено тем, что программа создана на платформе CLIPPER – xHarbour. Прежде всего, xHarbour – это виртуальная машина (VM). Такой подход уже использовался в системе управления базами данных (СУБД) CLIPPER, используется в JAVA.

В отличие от виртуальной машины JAVA, которая устанавливается на компьютере клиента и выполняет скрипты, полученные с сервера, виртуальная машина xHarbour работает на стороне сервера и выполняет блоки кода, посылаемые клиентом.

Блоки кода – это безымянные функции. Ссылку на эту безымянную функцию можно присвоить переменной и выполнить её с помощью специальной функции Eval ().

Блоки кода предоставляют прекрасную возможность строить информационные системы с гибкой структурой и различными видами связи и взаимодействия. Именно блоки кода положены в основу сервера dbfWebServer.

Передача данных

Мы были свидетелями парада технологий: майнфрам, клиент-сервер, распределённые сети, интернет. На всех этапах этой череды постоянно возникала проблема передачи данных. Каждый раз она каким-либо образом решалась, но всегда оставалось чувство неудовлетворённости. Не было полного понимания, что такое передача данных. В рамках технологии клиент-сервер это достаточно трудно осуществить, поскольку в такой конфигурации всегда доминирует сервер, от клиента в плане хранения данных мало что зависит.

Новый подход, предложенный в работе [4], и данная разработка дают возможность поставить передачу данных во главу угла создания информационных систем нового поколения, где передача данных становится определяющим условием существования информационных систем.

Из вышесказанного следует, что передача данных в утилитарном смысле для информационных систем – это общение информационных объектов. Передаётся смысл информации, значения данных, а не структура данных, как таковая. Исходя из этого, информационные системы следует строить со слабоформализованными структурами данных, но мощными средствами обработки данных и представления их в естественном виде и передаваемые по стандартным телекоммуникационным каналам.

DbfWebServer станет весомым помощником в этом деле, поскольку учитывает как накопленный опыт, так и вышеописанные спецификации.

Передача данных – это совместный доступ к одной и той же информации различных приложений.

Передача данных – это однотипный предсказуемый пользовательский интерфейс приложений.

Передача данных – это слабоформализованные структуры данных, обмен только информацией, а не структурой данных вместе с данными.

Передача данных – это распределённые базы данных.

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

Реализация спецификаций

Перейдём к практической стороне вопроса – реализации. Реализация вышеизложенных спецификаций и спецификаций, приведенных в гл. 7 в конкретной информационной системе – задача непростая. Если бы все вопросы были решены, не было бы необходимости в разаработках в этом направлении.

В рамках данной разработки будем использовать подход разделения на процессы.

С появлением сервера dbfWebServer стало понятно, что работа с базами данных делится на два процесса. Такое разделение является весьма продуктивным направлением в области обработки данных и построения информационных систем. Попробуем убедиться в этом на конкретном примере.

Один процесс работает с базой данных. Этот процесс – программа dbfWebServer, которая занимается задачей управления базой данных и обработкой запросов от клиентов.

Другой процесс отображает и строит пользовательский интерфейс. Пользовательский интерфейс строится исходя из данных, полученных от сервера, с помощью такого стандартного браузера, как Microsoft Internet Explorer, Netscape, Opera или Firefox.

Эти два процесса согласуются между собой с помощью спецификации HTML. Это обусловлено тем, что используются стандартные браузеры, и передача данных осуществляется в рамках технологии Интернет.

Рассмотрим построение интерфейса на примере рабочего блока, входящего в состав дистибутива.

Построение пользовательского интерфейса картотеки пациентов на базе управляемых списков (рис. 3.3).

Для создания пользовательского интерфейса сначала определим список глобальных переменных, которые будут использоваться в разработке.

Чтобы создать информационную систему или элемент информационной системы априори или исходя из опыта, определяется некий минимальный набор средств:

– объявить и инициализировать глобальные переменные;

– позаботиться о построении пользовательских форм;

– определиться с методологией построения форм;

– обозначить набор правил построения и развития форм.

Семейство переменных

Семейство переменных, которые помогают в управлении пользовательским списком, представлено следующим перечнем:

,ixpub («R_karbeg», 1) – row

,ixpub («L_karbeg», 10) – curele

,ixpub («V_karbeg»,»») – search value string

,ixpub («E_karbeg», 10) – end of list

,ixpub («U_karbeg»,»») – fierst element of list

,ixpub («N_karbeg»,»») – next element of list