use CGI::Application::Plugin::DBH (qw/dbh_config dbh/); use CGI::Application::Plugin::JSON ':all'; #--- Save sub save_form { my $self = shift; $self->validate_form(); if ( $self->param('error_list')) { my $result = [{ 'messages' => $self->param('error_list') }]; return $self->json_body( $result ); } $self->record(); my $result = [{ 'messages' => $self->param('success_list') }]; return $self->json_body( $result); } #--- Validate sub validate_form { my $self = shift; my (%sql, $error, @error_list); ($sql{'name'}, $error) = $self->val_input(1, 32, $self->query->param('name') ); if ( $error-> { msg } ) { push @error_list, { "name" => $error->{ msg } }; } ($sql{'ethnicity'}, $error) = $self->val_input( 1, 16, $self->query->param('ethnicity') ); if ( $error-> { msg } ) { push @error_list, { "ethnicity" => $error->{ msg } }; } ($sql{'entree'}, $error) = $self->val_selected ($self->query->param('entree') ); if ( $error-> { msg } ) { push @error_list, { "entree" => $error->{ msg } }; } ($sql{'email'}, $error) = $self->val_email( 1, $self->query->param('email') ); if ( $error-> { msg } ) { push @error_list, { "email" => $error->{ msg } }; } if (@error_list) { $self->param('error_list' => \@error_list) } $self->param('sql' => \%sql); } #--- Record sub record { my $self = shift; my %sql = %{ $self->param('sql') }; my @cols = map $self->dbh->quote_identifier($_), keys %sql; my $stmt = 'INSERT INTO entrees (created_on,' . join(',', @cols) . ') VALUES (NOW(),' . join(',', ('?') x @cols) . ')'; $self->dbh->do( $stmt, undef, values %sql); $self->param('success_list' => [{'success' => 'Record added'}]); }