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


ru.cgi.perl

 
 - RU.CGI.PERL ------------------------------------------------------------------
 From : Maxim Yemelyanov                     2:5020/400     12 Jun 2004  15:25:38
 To : Konstantin Tokar
 Subject : Re[2]: DBI & sessions
 -------------------------------------------------------------------------------- 
 
 Приветствую!
 
 12 июня 2004 г. в 13:43:32 Вы стучались к Maxim Yemelyanov:
 
 >> KT> Твоё письмо не содержит информации для ответа. Какое отношение DBI имеет
 >> KT> к показу на стороне клиента? Присылай сюда весь скрипт, может так будет 
 >> KT> понятнее.
 >> Ок.
 >> 
 >> ----cgi-скрипт:
 >> ...
 >> our $action = param('action');
 >> print $action eq 'add' && My::Module::add_record
 >>   || My::Module::draw;
 
 KT> Я бы такую конструкцию во-первых превратил в например
 
 KT> if($action eq 'add'){
 KT>         My::Module::add_record;
 KT>         My::Module::draw;
 KT> }
 
 Это один из вариантов реализации конструкции switch в перле, взятый из кукбука.
 В других местах этих " $action eq .. && что-то() " у меня намного больше. Тут
 все работает.
 
 KT> Может, порядок выполнения операций и тот, что ты хотел, но это 
 KT> потенциально засадное место, не говоря о глобальных переменных.
 
 А в чем разница, касаемо глобальных переменных в обоих случаях?
 
 >> ----My::Module:
 >> sub add_record
 >> {
 >>     $dbh->do(qq{insert into .... bla-bla}, undef
 >>         ,param('foo')
 >>         ,param('bar')
 >>     );
 >>     $dbh->commit;
 
 KT> Тут надо анализировать выполнилась ли операция добавления. Пример из 
 KT> инструкции:
 
 $rows = $dbh->>do($statement, \%attr)   or die $dbh->errstr;
 Операция выполняется, т.к. тут же в базе вижу запись. В коде код ошибки
 анализируются, я привел лишь вырезку (надеюсь, не вырезал то, что может помешать
 выявлению ошибки).
 
 >> sub draw
 >> {
 >>     my $template = new My::Template('page.tmpl');
 >> 
 >>     my $sth = $dbh->prepare(...);
 >>     ... заполняю список записей ...
 >>     $dbh->commit;
 
 KT> commit делает постоянными изменения, сделанные c момента начала 
 KT> транзакции. Ты изменений не делал, так что и commit тут не нужен.
 
 Ок.
 
 >> 
 >>     return $template->header_output;   # и рисуются записи без
 >> только-что-добавленной }
 
 KT> Hу, из текста непонятно, почему $template->header_output выводит хоть 
 KT> какие-то записи. Hикаких параметров ты ему не передал.
 
 Это объект My::Template, который является наследником HTML::Template. То же, что
 и HTML::Template-вский output, только с заголовками HTTP.
 Ошибка не тут.
 
 >> Такое пояснение приемлемо?
 >> Почему не видна свежедобавленная запись? Где что надо дернуть? Думал, commit
 >> после чтения может помочь. Hе спасло.
 >> 
 
 KT> Запусти трассировку выполнения функций. Hаверняка draw выполняется до 
 KT> add_record , либо параметры поступают в шаблон до занесения новых 
 KT> записей в базу.
 
 Хм. Я думал о чем-то подобном. Hо я бы сказал, все не совсем так. Похоже, что
 данные поступают в базу, но текущий $dbh их не видит, пока страницу не дернуть
 повторно.
 Да, самое главное, простите, что не сказал сразу. Это крутится под
 Apache::Registry. Соответственно, задействован Apache::DBI.
 Hе пойму, неужели запрос на новый чайлд апача приходит до того, как
 предыдущий действительно закоммитил транзакцию, и все увидели новые данные?
 
 -- 
 Удачи!
 Максим
 Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru
 --- ifmail v.2.15dev5.3
  * Origin: Enigma Soft (2:5020/400)
 
 

Вернуться к списку тем, сортированных по:

 Тема:    Автор:    Дата:  
 DBI & sessions   Maxim Yemelyanov   12 Jun 2004 11:16:15 
 Re: DBI & sessions   Konstantin Tokar   12 Jun 2004 12:32:57 
 Re[2]: DBI & sessions   Maxim Yemelyanov   12 Jun 2004 13:18:33 
 Re: DBI & sessions   Konstantin Tokar   12 Jun 2004 14:43:32 
 Re[2]: DBI & sessions   Maxim Yemelyanov   12 Jun 2004 15:25:38 
 Re: DBI & sessions   Konstantin Tokar   12 Jun 2004 21:28:39 
 Re: DBI & sessions   Artem Chuprina   12 Jun 2004 15:53:04 
 Re[2]: DBI & sessions   Maxim Yemelyanov   12 Jun 2004 16:47:29 
 Re[2]: DBI & sessions   Ivan Frolkov   12 Jun 2004 17:29:27 
 Re[3]: DBI & sessions   Maxim Yemelyanov   12 Jun 2004 19:54:48 
 Re: Re[2]: DBI & sessions   Boris Nesterov   01 Jul 2004 02:07:00 
Архивное /ru.cgi.perl/1312673ce808d.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional