0
votes

I want to insert data into my database. I am using codeigniter framework to build my app. When I click on submit button,It don't give any error just reload the same page and data in not inserted in database. Following my code to insert data into database -

public function addSale($saleDetails = array(), $items = array(), $warehouse_id)
    {
            foreach($items as $data){
                $product_id = $data['product_id'];
                $product_quantity = $data['quantity'];
                    $this->updateProductQuantity($product_id, $warehouse_id, $product_quantity);
            }


    // sale data
    $saleData = array(
        'reference_no'          => $saleDetails['reference_no'],
        'warehouse_id'          => $warehouse_id,
        'biller_id'             => $saleDetails['biller_id'],
        'biller_name'           => $saleDetails['biller_name'],
        'customer_id'           => $saleDetails['customer_id'],
        'customer_name'         => $saleDetails['customer_name'],
        'date'                  => $saleDetails['date'],
        'note'                  => $saleDetails['note'],
        'internal_note'         => $saleDetails['internal_note'],
        'inv_total'             => $saleDetails['inv_total'],
        'total_tax'             => $saleDetails['total_tax'],
        'total'                 => $saleDetails['total'],
        'total_tax2'            => $saleDetails['total_tax2'],
        'tax_rate2_id'          => $saleDetails['tax_rate2_id'],
        'inv_discount'          => $saleDetails['inv_discount'],
        'discount_id'           => $saleDetails['discount_id'],
        'user'                  => $saleDetails['user'],
        'shipping'              => $saleDetails['shipping']
    );

    if($this->db->insert('sales', $saleData)) {
        $sale_id = $this->db->insert_id();

        $addOn = array('sale_id' => $sale_id);
                end($addOn);
                foreach ( $items as &$var ) {
                    $var = array_merge($addOn, $var);
        }

        if($this->db->insert_batch('sale_items', $items)) {
            return true;
        }
    }

    return false;
}
1

1 Answers

0
votes

Based on https://ellislab.com/codeigniter/user-guide/database/examples.html , it seems to me, that you are missing a line -> $this->db->insert('sales', $saleData); . You do have it inside an if statement, but if statement will not execute it as a code, but check if it returns true.

 $saleData = array(
  'reference_no'          => $saleDetails['reference_no'],
        'warehouse_id'          => $warehouse_id,
        'biller_id'             => $saleDetails['biller_id'],
        'biller_name'           => $saleDetails['biller_name'],
        'customer_id'           => $saleDetails['customer_id'],
        'customer_name'         => $saleDetails['customer_name'],
        'date'                  => $saleDetails['date'],
        'note'                  => $saleDetails['note'],
        'internal_note'         => $saleDetails['internal_note'],
        'inv_total'             => $saleDetails['inv_total'],
        'total_tax'             => $saleDetails['total_tax'],
        'total'                 => $saleDetails['total'],
        'total_tax2'            => $saleDetails['total_tax2'],
        'tax_rate2_id'          => $saleDetails['tax_rate2_id'],
        'inv_discount'          => $saleDetails['inv_discount'],
        'discount_id'           => $saleDetails['discount_id'],
        'user'                  => $saleDetails['user'],
        'shipping'              => $saleDetails['shipping']
                );

    $this->db->insert('sales', $saleData);

This should work. You can also check if it succeeds like this ->

return ($this->db->affected_rows() != 1) ? false : true;