WebClub - Всероссийский Клуб Веб-разработчиков
WebClub.RU » Советы » Вывод текста пресс-релиза

Вывод текста пресс-релиза


Дата публикации: 01-01-2008

После того как мы вывели список всех имеющихся в базе данных пресс-релизов, нужно дать пользователю возможность просмотреть текст какого-нибудь из них (соответствующий скрипт вы также сможете найти на нашем компакт-диске).

Новый скрипт pr-read-dbi.pl будет незначительно отличаться от уже созданного нами pr-list-dbi.pl.

Данный листинг на 98% походит на листинг 1, хотя, имеет некоторые незначительные отличия:

  • подключена библиотека CGI для считывания параметра id (9) из строки запроса (например, http://localhost/cgi-bin/pr-content-dbi.pl?id=1);
  • применяется всего один HTML-шаблон (pr-content-tpl.htm);
  • запрос к базе данных дополнен условным SQL-оператором WHERE для выборки всех данных, соответствующих определенному пресс-релизу по идентификатору col_id;
  • из БД также считывается поле col_body с текстом выбранного пресс-релиза.

Создание нового пресс-релиза

 

Расширим функциональность нашей системы, добавив возможность создания новых пресс-релизов, без необходимости непосредственной работы с базой данных для пополнения таблицы tbl_news_items новой информацией.

Итак, новая Perl-программа (которая, как и предыдущие две, находится на компакт-диске) будет отличаться от предыдущих прежде всего тем, что предназначена не для отображения данных, а для их добавления в БД. Следовательно, мы должны несколько изменить часть, отвечающую за взаимодействие с БД, применив SQL-запрос INSERT и соответствующие ему операторы модуля DBI.

Строки 12-18 — это тело основной программы:

12. if ($cmd ne "add") {
13. &show_form;
14. } else {
15. $dbh = DBI->connect(‘dbi:mysql:db_website’, _
’root’,’’); 
16. &add_pr;
17. dbh->disconnect;
18. }

Здесь мы проверяем, поступила ли команда на добавление пресс-релиза в базу данных. Как только она поступила, устанавливаем соединение с БД (15), выполняем подпрограмму app_pr() (16) и завершаем соединение (17). Если же команды не было, то просто отображаем форму заполнения (13) для данных пресс-релиза — процедура show_form().

Строки 20-36 — это тело процедуры добавления пресс-релиза pr_add():

19. 
20. sub add_pr {
21. $title = $q->param("pr_title");
22. $author = $q->param("pr_author");
23. $body = $q->param("pr_body");
24. $body =~ s/\r\n/<br>/g; 
25. 
26. my($sql) = "INSERT INTO tbl_news_items 
    (col_title,col_author,col_body,col_date)    
	VALUES (\’$title\’,\’$author\’,\’$body\’,CURDATE())";
27. $rs = $dbh->do($sql); 
28. 
29. if ($@) { 
30. $rc = $dbh->rollback;
31. } else {
32. $rc = $dbh->commit;
33. }
34. 
35. print "Location: /cgi-bin/pr-list-dbi.pl\n\n"; 
36. }

Сперва обрабатываем данные формы (22-25), составляем SQL-запрос (27) и выполняем его (27) с помощью DBI-метода $dbh->do(). Поскольку здесь производится процедура вставки данных в БД, то нужно позаботиться о возможности отмены операции в случае сбоев. Для этого мы вставили код отмены транзакции и отката в предыдущее состояние (30-34). При сбое при выполнении $dbh->do() отменяем сделанные изменения (31). Если же сбоя не произошло, то подтверждаем сделанные изменения (33). Далее после всех действий просто переходим на страницу со списком всех пресс-релизов (36).

Строки 37-55 — это тело процедуры вывода формы для ввода информации о новом пресс-релизе (используется HTML-шаблон, имя которого задано в переменной $TPL_INSERT, pr-add-tpl.htm):

37. 
38. sub show_form {
39. print "Content-type:text/html\n\n";
40. 
41. open (L, "$TPL_INSERT");
42. while ($line=<L>) {
43. chomp($line);
44. if ($line=~/\@/) {
45. if ($line=~/\@ADD\@/) {
46. $toadd = "pr-add-dbi.pl";
47. $line =~ s/\@ADD\@/$toadd/;
48. } else { 
49. $tolist = "pr-list-dbi.pl";
50. $line =~ s/\@LIST\@/$tolist/;
51. }
52. }
53. print "$line\n"; 
54. }
55. close(L);
Домен продается

Популярное

Не так давно в сети появился новый сервис, под названием Dead Man Zero. Этот сервис сделал...
Рынок социальных площадок уже давно стал стабильным. Несмотря на то, что время от времени...
Artisteer 4 – единственный в своем роде продукт, позволяющий автоматизировать работу над созданием...
Апрель 2024 (1)
Октябрь 2018 (14)
Февраль 2017 (3)
Январь 2017 (1)
Август 2016 (1)
Май 2016 (2)

Карта сайта: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41

Друзья сайта



Случайная цитата

Cory Dodt:

"Если называть Python заменой BASIC, то тогда и трансформер Optimus Prime — это только замена грузовика."

Опрос

Ваша техника?

Настольный компютер
Ноутбук
Смартфон
iPad
iPhone
другое