Чтение онлайн

ЖАНРЫ

Интернет решения от доктора Боба

Swart Bob

Шрифт:

2.2.9. Подсчет обращений

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

if DataRec.Author <> '' then

begin

{$IFDEF DEBUG}

writeln('Author: ',DataRec.Author,'<BR>');

{$ENDIF}

for i:=1 to Books16 do

if Pos(DataRec.Author,Book16[i].Author) <> 0 then

Inc(Result16[i]);

for i:=1 to Books32 do

if Pos(DataRec.Author,Book32[i].Author) <> 0 then

Inc(Result32[i])

end;

Заметим,

что конструкция {$IFDEF DEBUG} может быть использована для вывода значения входного поля в стандартный вывод, так что мы можем использовать наше CGI приложение для отладки формы. Отладка вашего CGI приложения может оказать трудной задачей, поскольку вам нужен Web сервер и браузер для этого…

2.2.10. Результаты запроса

Теперь посмотрим на последнюю часть CGI приложения: часть, в которой генерируется HTML код. Здесь я использую другое свойство расширенного HTML, именованные таблицы, что бы вывод выглядел красивее. Для каждой записи, у которой счетчик более единицы, я выводу счетчик, название, автора, издательство, ISBN, уровень, техническое содержание, качество книги, стоимость и общее значение. Я также включаю ссылку из названия на другое место, где находится более подробное описание. С помощью этого великолепного свойства динамических HTML страниц: вы даже можете включать ссылки на статические страницы, так как результат запроса, часто стартовая точка для прыжка в другое место!

writeln('<HR>');

writeln('');

writeln('<H3>The following books have been found for you:</h3>');

writeln('<TABLE BORDER>');

writeln('<TR>');

writeln('<TH><B>Hits</B></TH>');

writeln('<TH><B>Title</B></TH>');

writeln('<TH><B>Author</B></TH>');

writeln('<TH><B>Publisher</B></TH>');

writeln('<TH><B>ISBN</B></TH>');

writeln('<TH><B>Level</B></TH>');

writeln('<TH>Con</TH>');

writeln('<TH>Wri</TH>');

writeln('<TH>Val</TH>');

writeln('<TH><B>Tot</B></TH>');

writeln('</TR>');

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

от 5 до 1, так что я просто иду по списку книг и печатаю каждую со своим рейтингом. Этот путь, потому что я знаю, что книги уже отсортированы по рейтингу в основной базе delbooks.db (которая отсортирована по уровню и рейтингу). Обычно книги в верху списка уже лучший ответ на заданный вопрос.

if DataRec.Delphi2 then

begin

for Hits := 5 downto 1 do

begin

for i:=1 to Books32 do if Result32[i] = Hits then

begin

writeln('<TR>');

writeln('<TD>',Roman[Hits],'</TD>');

writeln('<TD><A href="#">',Book32[i].Title,'</A></TD>');

writeln('<TD>',Book32[i].Author,'</TD>');

writeln('<TD>',Book32[i].Publisher,'</TD>');

writeln('<TD>',Book32[i].ISBN,'</TD>');

writeln('<TD>',Level[Book32[i].Level],'</TD>');

writeln('<TD>',Book32[i].TechnicalContentsQuality,'</TD>');

writeln('<TD>',Book32[i].QualityOfWriting,'</TD>');

writeln('<TD>',Book32[i].ValueForMoney,'</TD>');

writeln('<TD><B>',Book32[i].OverallAssessment,'</B></TD>');

writeln('</TR>')

end

end;

if DataRec.Delphi1 then writeln('<TR></TR>')

end;

if DataRec.Delphi1 then

begin

for Hits := 5 downto 1 do

begin

for i:=1 to Books16 do if Result16[i] = Hits then

begin

writeln('<TR>');

writeln('<TD>',Roman[Hits],'</TD>');

writeln('<TD><A href="#">',Book16[i].Title,'</A></TD>');

writeln('<TD>',Book16[i].Author,'</TD>');

writeln('<TD>',Book16[i].Publisher,'</TD>');

writeln('<TD>',Book16[i].ISBN,'</TD>');

writeln('<TD>',Level[Book16[i].Level],'</TD>');

Поделиться с друзьями: