Karina
Karina

Reputation: 663

Form not sending data to database?

I have created a form and i am trying to get the data collected from the form to submit into a table i have created in mysql. The following is my code that i have tried using to submit this data but it is not working, my table remains empty?

public function action_claimincentive() {
    $this->template->content = View::factory('crm/uk/claim_incentive_form');
    $this->template->content->thanks = false;
    $this->template->content->val = '';
    $this->template->content->post = '';

    if ($this->request->post('form')) {
        $post = $this->request->post('form');

        $stmt = DB::query(Database::INSERT, 'INSERT INTO `claim_incentive_form_data` (`form_id`,`Claimant Name`, `Claimant Postcode`, `Purchase Order No.`, `Claimant Email Address`, `Storename`, `Storetown`, `Date of Sale`, `Date of Delivery`, `Tempur Acknowledgement No.`, `Tempur Product`)
        VALUES (:claimantname, :claimantpostcode, :orderno, :email, :storename, :storetown, :dateofsale, :dateofdelivery, :acknowledgementno, :tempurproduct)');
        $stmt->param(':claimantname', $post['claimantname']);
        $stmt->param(':claimantpostcode', $post['claimantpostcode']);
        $stmt->param(':orderno', $post['orderno']);
        $stmt->param(':email', $post['email']);
        $stmt->param(':storename', $post['storename']);
        $stmt->param(':storetown', $post['storetown']);
        $stmt->param(':dateofsale', $post['dateofsale']);
        $stmt->param(':dateofdelivery', $post['dateofdelivery']);
        $stmt->param(':acknowledgementno', $post['acknowledgementno']);
        $stmt->param(':tempurproduct', $post['tempurproduct']);
        try {
            $stmt->execute();
            $this->template->content->post = $post;
            $this->template->content->thanks = true;
        } catch (Exception $e) {
            FB::error($e);
        }

    }
}

Upvotes: 0

Views: 86

Answers (2)

Krish R
Krish R

Reputation: 22711

Column mismatching error, form_id value not supplied into the insert query and its param also,

    $stmt = DB::query(Database::INSERT, 'INSERT INTO `claim_incentive_form_data` (`form_id`,`Claimant Name`, `Claimant Postcode`, `Purchase Order No.`, `Claimant Email Address`, `Storename`, `Storetown`, `Date of Sale`, `Date of Delivery`, `Tempur Acknowledgement No.`, `Tempur Product`)
            VALUES (:form_id, :claimantname, :claimantpostcode, :orderno, :email, :storename, :storetown, :dateofsale, :dateofdelivery, :acknowledgementno, :tempurproduct)');  

    $stmt->param(':form_id', $post['form_id']);// added form_id here, assumed you can replace by your value 
    $stmt->param(':claimantname', $post['claimantname']);
    $stmt->param(':claimantpostcode', $post['claimantpostcode']);
    $stmt->param(':orderno', $post['orderno']);
    $stmt->param(':email', $post['email']);
    $stmt->param(':storename', $post['storename']);
    $stmt->param(':storetown', $post['storetown']);
    $stmt->param(':dateofsale', $post['dateofsale']);
    $stmt->param(':dateofdelivery', $post['dateofdelivery']);
    $stmt->param(':acknowledgementno', $post['acknowledgementno']);
    $stmt->param(':tempurproduct', $post['tempurproduct']);

Upvotes: 0

Daryl Van Sittert
Daryl Van Sittert

Reputation: 877

There are 11 columns being inserted into but only 10 values. I think you're including form_id accidentally.

Upvotes: 1

Related Questions