how to insert form data in two tables including table having multiple row with same id using codeigniter

Viewed 59

View - This is form structure having table where I have to insert multiple rows

<div class="form-group col-md-3 required ">
    <label for="journal_number" class="control-label">{$journal_fields.journal_number}</label>
    <div class="input-group">
        <div class="input-group-addon"><i class="fa fa-id-card-o"></i></div>
        <input  readonly class="form-control" required="required" placeholder="Enter Journal Number"
               value="1"
               name="journal_number" id="journal_number" type="text">
    </div>
</div>


<div class="form-group col-md-6 required ">
    <label for="journal_name" class="control-label">{$journal_fields.journal_name}</label>
    <div class="input-group">
        <div class="input-group-addon"><i class="fa fa-id-card-o"></i></div>
        <input class="form-control" required="required" placeholder="Enter Journal Name"
               value="{if isset($journal_data)}{$journal_data.journal_name}{/if}"
               name="journal_name" id="journal_name" type="text">
    </div>
</div>

<tr id="item-row-0">
    <td class="text-center" style="vertical-align: middle;">
      <button type="button" onclick="$(this).tooltip('destroy'); $('#journal-row-0').remove(); totalItem();" data-toggle="tooltip" title="Delete" class="btn btn-xs btn-danger"><i class="fa fa-trash"></i></button>
    </td>
    <td>
      <input class="form-control typeahead" required="required" placeholder="Enter Line Number" name="journal[0][line_no]" type="text" id="journal-line_no-0" autocomplete="off">
      <input name="journal[0][item_id]" type="hidden" id="journal-id-0">
    </td>
    <td>
      <input class="form-control typeahead" required="required" placeholder="Enter Account" name="journal[0][account]" type="text" id="journal-account-0">
    </td>
    <td>
      <input class="form-control typeahead" required="required" placeholder="Enter Account Name" name="journal[0][account_name]" type="text" id="journal-account_name-0">
    </td>
    <td>
      <input class="form-control typeahead" required="required" placeholder="Enter Branch" name="journal[0][branch]" type="text" id="journal-branch-0">
    </td>
    <td>
      <input class="form-control typeahead" required="required" placeholder="Enter Department" name="journal[0][department]" type="text" id="journal-department-0">
    </td>
    <td>
      <input class="form-control typeahead" required="required" placeholder="Enter Debit" name="journal[0][debit]" type="text" id="journal-debit-0">
    </td>
    <td>
      <input class="form-control typeahead" required="required" placeholder="Enter Credit" name="journal[0][credit]" type="text" id="journal-credit-0">
    </td>
    <td>
      <input class="form-control typeahead" required="required" placeholder="Enter Accounted Debit" name="journal[0][accounted_debit]" type="text" id="journal-accounted_debit-0">
    </td>
    <td>
      <input class="form-control typeahead" required="required" placeholder="Enter Accounted Credit" name="journal[0][accounted_credit]" type="text" id="journal-accounted_credit-0">
    </td>
    <td>
      <input class="form-control typeahead" required="required" placeholder="Enter Description" name="journal[0][description]" type="text" id="journal-description-0">
    </td>

</tr>

Controller-This is controller from where I have to send data to model.

public function create()
{
    $customerAccount = $this->model_ea_account->getAllByCompanyId($this->customerId);

    $types = $this->model_categories->getAll();
    $taxRates = $this->model_ea_tax_class->getCustomerTaxClass($this->customerId);
    $journal_categories = $this->model_journals->getCategoryname();
    //$currency = $this->model_currency->getAll();
    $currency = $this->model_currency->getAllByCustomerId($this->customerId);
    $dataInfo = $this->model_customer_setting->getAllSettings($this->customerId);
    $ledgers_name = $this->model_journals->getLedgersName();
    $fields = $this->model_journals->fields();
    //var_dump($currency);exit;

    $this->load->library('form_validation');
    
    switch ($_SERVER['REQUEST_METHOD']) {
        case 'GET':
            $date = date('Y-m-d');
            $journal_data['journal_date'] = $date;
            $journal_data['currency_con_date'] = $date;
            $this->template->assign('journal_data', $journal_data);
            $this->template->assign('action_mode', 'create');
            $this->template->assign('categories_types', $types);
            $this->template->assign('taxRates', $taxRates);
            $this->template->assign('journal_categories', $journal_categories);
            $this->template->assign('currency', $currency);
            $this->template->assign('data_general', $dataInfo);
            $this->template->assign('ledgers_name', $ledgers_name);
            $this->template->assign('journal_fields', $fields);
            $this->template->assign('breadcrumb', 'Journal');
            $this->template->assign('customerAccount', $customerAccount);
            $this->template->assign('breadcrumb_child', 'Add New');
            $this->template->assign('template', 'journals/form_journals');
            $this->template->display(Frontend_Path . 'frame_frontend.tpl');
            break;

        case 'POST':
            $data_post = $this->input->post();
            
            $data_post['created_at'] = date("Y-m-d");
            $data_post['company_id'] = $this->customerId;
            //var_dump($data_post);exit();
            if ($this->form_validation->run() == FALSE) {
                $errors = $this->form_validation->error_array();
                $this->template->assign('journal_data', $journal_data);
                $this->template->assign('action_mode', 'create');
                $this->template->assign('categories_types', $types);
                $this->template->assign('taxRates', $taxRates);
                $this->template->assign('journal_categories', $journal_categories);
                $this->template->assign('currency', $currency);
                $this->template->assign('data_general', $dataInfo);
                $this->template->assign('ledgers_name', $ledgers_name);
                $this->template->assign('journal_fields', $fields);
                $this->template->assign('breadcrumb', 'Journal');
                $this->template->assign('customerAccount', $customerAccount);
                $this->template->assign('breadcrumb_child', 'Add New');
                $this->template->assign('errors', $errors);
                $this->template->assign('template', 'journals/form_journals');
                $this->template->display(Frontend_Path . 'frame_frontend.tpl');
                
            } elseif ($this->form_validation->run() == TRUE) {
                $insert_id = $this->model_journals->insert($data_post);
                $this->session->set_flashdata('success', 'Data Added Successfully!');
                redirect(base_url() . 'journals');
            }
            break;
    }
}

Model- In model data is inserted into ea_journal_headers table but unable to insert into ea_journal_lines table where I have to insert multiple rows with same id from ea_journal_headers table

public function insert($data)
{
    //var_dump($data);exit();
    $ea_journal_headers['company_id'] = $data['company_id'];
    //$ea_journal_headers['currency_id'] = $data['currency_id'];
    
    $ea_journal_headers['journal_number'] = $data['journal_number'];
    $ea_journal_headers['journal_name'] = $data['journal_name'];
    $ea_journal_headers['ledger_name'] = $data['ledger_name'];
    $ea_journal_headers['journal_date'] = $data['journal_date'];
    $ea_journal_headers['journal_source'] = $data['journal_source'];
    $ea_journal_headers['journal_category'] = $data['journal_category'];
    $ea_journal_headers['balance_type'] = $data['balance_type'];
    $ea_journal_headers['period_name'] = $data['period_name'];
    $ea_journal_headers['currency_code'] = $data['currency_code'];
    $ea_journal_headers['currency_con_date'] = $data['currency_con_date'];
    $ea_journal_headers['currency_con_type'] = $data['currency_con_type'];
    $ea_journal_headers['currency_con_rate'] = $data['currency_con_rate'];
    $ea_journal_headers['status'] = $data['status'];
    $ea_journal_headers['description'] = $data['description'];
    $ea_journal_headers['created_at'] = $data['created_at'];
    $this->db->insert($this->tableName, $ea_journal_headers);
    $journal_header_id = $this->db->insert_id();
 
    foreach ($data['journal'] as $journal) {
        $ea_journal_lines = [];
        $journalData = $journal;
        $journalData['company_id'] = $data['company_id'];
        $journalData['journal_header_id'] = $journal_header_id;
        $journalData['line_no'] = $data['line_no'];
        $journalData['account'] = $data['account'];
        $this->db->insert($this->journalLinesTable, $journalData);
            
    }
}

0 Answers
Related