Последние пару дней я возился с CGI :: application и решил создать действительно простой форум: на первой странице отображаются все сообщения (только первый уровень, без ответов или что-либо еще) и форма, которая может бытьиспользуется для создания нового сообщения.
Проблема, с которой я сталкиваюсь, заключается в том, что данные, которые вводятся в форму, никогда не вставляются в базу данных SQLite.
Вот подпрограмма I 'У меня возникли проблемы с:
sub newpost {
my $self = shift;
if ( $self->param() ){
my $dbh = DBI->connect("dbi:SQLite:dbname=$database_file","","");
my $sth = $dbh->prepare("INSERT INTO posts (author, time, text) VALUES('testuser', '2011-10-23', 'This is a test!')");
$sth->execute();
$self->header_type('redirect');
$self->header_props(-url=> '?rm=viewall');
}
else {
my $tmpl_obj = $self->load_tmpl('newpost.html');
return $tmpl_obj->output();
}
. Что происходит правильно, так это то, что при первом вызове режима запуска newpost выполняется код внутри оператора else (шаблон с формойзагружен).Действие для формы вызывает тот же режим выполнения, но теперь, когда предоставляются параметры, выполняется код в операторе if.Я проверил сам код SQL, и он работает, так что, должно быть, я перебираю кое-что еще.
Кроме того, считается ли наилучшей практикой реализовывать логику формы таким образом?
Спасибо