CodeIgniter: Populating two tables through two arrays from the same form? - php

I tried doing the following and surprisingly it only populates the first table (new_guest) while writing only zero values to the other (new_reservation). How can I properly configure this?
Controller:
function guest_checks_in() {
$data_guest = array (
'guest_title' => $this->input->post('guest_title'),
'guest_name' => $this->input->post('guest_name'),
'guest_gender' => $this->input->post('guest_gender'),
'guest_phone' => $this->input->post('guest_phone'),
'guest_email' => $this->input->post('guest_email'),
'guest_address' => $this->input->post('guest_address'),
'guest_province' => $this->input->post('guest_province'),
'guest_country' => $this->input->post('guest_country'),
'guest_postal_code' => $this->input->post('guest_postal_code'),
'guest_dob' => $this->input->post('guest_dob'),
'guest_nic_pp_dl' => $this->input->post('guest_nic_pp_dl')
);
$data_reservation = array (
'room_type' => $this->input->post('room_type'),
'meal_type' => $this->input->post('meal_type'),
'bed_type' => $this->input->post('bed_type'),
'ext_beds' => $this->input->post('ext_beds'),
'number_of_guests' => $this->input->post('number_of_guests'),
'start_date' => $this->input->post('start_date'),
'end_date' => $this->input->post('end_date'),
'reservation_duration' => $this->input->post('reservation_duration'),
'room_number' => $this->input->post('room_number'),
'total' => $this->input->post('total')
);
$this->reservations_model->add_guests($data_guest);
$this->reservations_model->add_reservations($data_reservation);
$this->confirm_check_in();
}
Model:
class Reservations_model extends CI_Model {
function add_guests($data_guest) {
$this->db->insert('new_guest', $data_guest);
return;
}
function add_reservations($data_reservation) {
$this->db->insert('new_reservation', $data_reservation);
return;
}
}

it will be good if you use transaction. if data in both tables must be entered.
function guest_checks_in() {
$data_guest = array (
'guest_title' => $this->input->post('guest_title'),
'guest_name' => $this->input->post('guest_name'),
'guest_gender' => $this->input->post('guest_gender'),
'guest_phone' => $this->input->post('guest_phone'),
'guest_email' => $this->input->post('guest_email'),
'guest_address' => $this->input->post('guest_address'),
'guest_province' => $this->input->post('guest_province'),
'guest_country' => $this->input->post('guest_country'),
'guest_postal_code' => $this->input->post('guest_postal_code'),
'guest_dob' => $this->input->post('guest_dob'),
'guest_nic_pp_dl' => $this->input->post('guest_nic_pp_dl')
);
$data_reservation = array (
'room_type' => $this->input->post('room_type'),
'meal_type' => $this->input->post('meal_type'),
'bed_type' => $this->input->post('bed_type'),
'ext_beds' => $this->input->post('ext_beds'),
'number_of_guests' => $this->input->post('number_of_guests'),
'start_date' => $this->input->post('start_date'),
'end_date' => $this->input->post('end_date'),
'reservation_duration' => $this->input->post('reservation_duration'),
'room_number' => $this->input->post('room_number'),
'total' => $this->input->post('total')
);
$this->reservations_model->add_all_guests($data_guest,$data_reservation);
$this->confirm_check_in();
}
in model
function add_all_guests($data_guest,$data_reservation) {
$this->db->trans_begin();
$this->db->insert('new_guest', $data_guest);
$this->db->insert('new_reservation', $data_reservation);
if ($this->db->trans_status() === FALSE)
{
$this->db->trans_rollback();
return false;
}
else
{
$this->db->trans_commit();
return true;
}
}

Related

Codeigniter Model Undefined Index on Array

I'm trying to use Codeigniter to update my value once the user had submitted the form. But unfortunately, there was an error of undefined index for few of the variable which I store in an array.
Below is the Code that I use to pass from Controller to the Model
Controller Code :
$prep_data = array(
'full_name' => $this->input->post('full_name'),
'nric' => $this->input->post('nric'),
'dob' => $this->input->post('dob'),
'mobile_phone' => $this->input->post('mobile_phone'),
'email' => $this->input->post('email'),
'address_line_1' => $this->input->post('address_line_1'),
'address_line_2' => $this->input->post('address_line_2'),
'postcode' => $this->input->post('postcode'),
'state' => $this->input->post('state'),
'current_brand' => $this->input->post('current_brand'),
'pregnant' => $isPregnant, //Edit by Marcus
'breastfeeding' => $isBreastfeeding, //Added by Marcus
'child_full_name' => $this->input->post('child_full_name'),
'child_dob' => $this->input->post('child_dob'),
'child_current_brand' => $this->input->post('child_current_brand'),
'expected_give_birth_date' => $this->input->post('expected_give_birth_date'),
'image' => '',
'quantity_purchase' => $this->input->post('quantity_purchase'),
'foc_amount' => $this->input->post('foc_amount'),
'marketing_opt' => $this->input->post('marketing_opt'),
'centre_id' => get_cookie('abbott_centre', TRUE),
'user_id' => $this->session->id,
'sampling_day' => $centre_data['sampling_day'],
'created_at' => $datetime,
'updated_at' => $datetime
);
$this->entry_model->update_entry($prep_data);
Model Code :
function update_entry($data){
echo print_r($data);
if(!empty($data['full_name'])) $this->db->set('full_name', $data['full_name']);
if(!empty($data['nric'])) $this->db->set('nric', $data['nric']);
if(!empty($data['dob'])) $this->db->set('dob', $data['dob']);
if(!empty($data['mobile_phone'])) $this->db->set('mobile_phone', $data['mobile_phone']);
if(!empty($data['email'])) $this->db->set('email', $data['email']);
if(!empty($data['address_line_1'])) $this->db->set('address_line_1', $data['address_line_1']);
if(!empty($data['address_line_2'])) $this->db->set('address_line_2', $data['address_line_2']);
if(!empty($data['postcode'])) $this->db->set('postcode', $data['postcode']);
if(!empty($data['state'])) $this->db->set('state', $data['state']);
if(!empty($data['current_brand'])) $this->db->set('current_brand', $data['current_brand']);
if(!empty($data['pregnant'])){ //Fix by Marcus
$this->db->set('pregnant', $data['pregnant']);
}else {
$this->db->set('pregnant', 0);
}
if(!empty($data['breastfeeding'])){ //Fix by Marcus
$this->db->set('breastfeeding', $data['breastfeeding']);
}
else {
$this->db->set('breastfeeding', 0);
}
if(!empty($data['expected_give_birth_date'])) $this->db->set('expected_give_birth_date', $data['expected_give_birth_date']);//Fix by Marcus
if(!empty($data['child_full_name'])) $this->db->set('child_full_name', $data['child_full_name']);
if(!empty($data['child_dob'])) $this->db->set('child_dob', $data['child_dob']);
if(!empty($data['child_current_brand'])) $this->db->set('child_current_brand', $data['child_current_brand']);
if(!empty($data['image'])) $this->db->set('image', $data['image']);
if(isset($data['quantity_purchase'])) $this->db->set('quantity_purchase', $data['quantity_purchase']);
if(isset($data['foc_amount'])) $this->db->set('foc_amount', $data['foc_amount']);
if(!empty($data['marketing_opt'])) $this->db->set('marketing_opt', $data['marketing_opt']);
if(!empty($data['centre_id'])) $this->db->set('centre_id', $data['centre_id']);
if(!empty($data['user_id'])) $this->db->set('user_id', $data['user_id']);
if(!empty($data['created_at'])) $this->db->set('created_at', $data['created_at']);
if(!empty($data['updated_at'])) $this->db->set('updated_at', $data['updated_at']);
$this->db->where('id', $data['id']);
$this->db->update('entry');
}
Other $data[] value had no problem but only the 'pregnant' and 'breastfeeding' had the error on Undefined Index. I did try to print_r to show the $data value and all are seem to be alright.
Below are the output :
Array ( [full_name] => e2e [nric] => 123 [dob] => 2019-07-09 [mobile_phone] => 1231231231 [email] => [address_line_1] => [address_line_2] => [postcode] => [state] => [current_brand] => [pregnant] => 0 [breastfeeding] => 1 [child_full_name] => [child_dob] => 0000-00-00 [child_current_brand] => [expected_give_birth_date] => 2019-07-09 [image] => [quantity_purchase] => 123123 [foc_amount] => 123 [sampling_day] => [updated_at] => 2019-07-10 19:27:43 [id] => 8 ) 1Array ( [image] => 8_20190710_192743.jpg [id] => 8 ) 1
What will be the caused for this 'pregnant' and 'breastfeeding' array? As it keeps getting NULL as a return.
Thanks
You need to use isset() to check either index set or not like
$isPregnant = 0;
$isBreastfeeding = 0;
if(isset($_POST['pregnant']) && $_POST['pregnant'] == 1)
{
$isBreastfeeding = 0;
$isPregnant = 1; //Is breastfeeding selected
}
if(isset($_POST['breastfeeding']) && $_POST['breastfeeding'] == 1)
{
$isPregnant = 0;
$isBreastfeeding = 1; //Is breastfeeding selected
}

How to get cart data inside array in codeigniter

i have 2 products in my cart session. and want me to combine in array data_order. but read only 1 product. actually this data I will send in an email so from that I make the format of the data like this.
my controller :
foreach ($this->cart->contents() as $item){
if($item['diskon'] == "0"){
$harga_before = $item['before'];
$harga_after = $item['price'];
}else{
$harga_before = $item['before'];
$harga_after = $item['price'];
}
foreach ($this->cart->product_options($item['rowid']) as $option_name => $option_value){
if(empty($option_value)){
$option_size = "";
$option_color = "";
}else{
$option = $item['options'];
$option_size = $option['Size'];
$option_color = $option['Warna'];
}
}
$data = array(
'inv' => $invoice,
'tglOrdercs' => date('d F Y H:i:s'),
'tglExp' => $date_maju,
'nmlkp' => $nmlkpi,
'almtkp' => $address,
'noTelp' => $notelp271,
'methode' => $method,
'bnk_option' => $banking_select,
'data_order' => array(
'nama_produk' => $item['name'],
'artikel' => $item['artikel'],
'diskon' => $item['diskon'],
'ukuran' => $option_size,
'warna' => $option_color,
'qty' => $item['qty'],
'harga_fix' => $harga_after,
'harga_before' => $harga_before,
),
);
}
my result :
Array(
[inv] => STJOHB9261JR
[tglOrdercs] => 28 September 2017 11:23:33
[tglExp] => 28 September 2017 21:23:33
[nmlkp] => danny setyawan
[almtkp] => Perum puspa sari H22 sidoarjo
[noTelp] => 089263423647
[methode] => Transfer
[bnk_option] => Bank BNI
[data_order] => Array
(
[nama_produk] => Sonic TL Brown
[artikel] => CH2002-831
[diskon] => 40
[ukuran] => 39
[warna] => Coklat
[qty] => 2
[harga_fix] => 125340
[harga_before] => 208900
)
)
ignore ">", this result from browser console.

Laravel chunk array returns empty

I've just started laravel and when I try to get values from database it's fine. But when I try to return the values, it's just empty. Here's the code:
public function index()
{
$collection = [];
Leg::chunk(200, function ($data) {
foreach ($data as $val) {
$collection[] = [
'fixture_id' => $val->fixture_id,
'ops_leg_id' => $val->ops_leg_id,
'designator' => $val->designator,
'operator' => $val->operator,
'flight_number' => $val->flight_number,
'dep_airport' => $val->dep_airport,
'arr_airport' => $val->arr_airport,
'ac_registration' => $val->ac_registration,
'ac_code' => $val->ac_code,
'sta_at' => $val->sta_at,
'std_at' => $val->std_at,
'ata_at' => $val->ata_at,
'atd_at' => $val->atd_at,
'deleted' => $val->deleted
];
}
});
return array($collection);
}
Edit: My output of the webpage is just [[]]
The inline function does not return anything
public function index()
{
Leg::chunk(200, function ($data) {
$collection = [];
foreach ($data as $val) {
$collection[] = [
'fixture_id' => $val->fixture_id,
'ops_leg_id' => $val->ops_leg_id,
'designator' => $val->designator,
'operator' => $val->operator,
'flight_number' => $val->flight_number,
'dep_airport' => $val->dep_airport,
'arr_airport' => $val->arr_airport,
'ac_registration' => $val->ac_registration,
'ac_code' => $val->ac_code,
'sta_at' => $val->sta_at,
'std_at' => $val->std_at,
'ata_at' => $val->ata_at,
'atd_at' => $val->atd_at,
'deleted' => $val->deleted
];
}
return array($collection);
});
}

error inserting an array in codeigniter

when I insert an array in the db, I get the error "unidentified index" in some of the variables even though they all have their corresponding values. Tried using print_r, and it returned an array with values, but when I try to insert the array, the values become null. I dont understand why and I can't see the error in my code.
here's my controller
public function test()
{
if($this->session->userdata('logged_in'))
{
$session_data = $this->session->userdata('logged_in');
$user_id = $session_data['user_id'];
$table_id = $this->input->post('table');
$start = $this->input->post('start');
$end = $this->input->post('end');
$query = $this->process_resto_list->test($table_id);
if ($query->num_rows() > 0)
{
$row = $query->row();
$resto_id = $row->resto_id;
$table_number= $row->table_number;
$table_size = $row->table_size;
}
//$resto_id = $session_data['user_id'];
$values = array(
'resto_id' => $resto_id,
'diner_id' => $user_id,
'date' => $this->input->post('date'),
'start_time' => $start,
'end_time' => $end,
'table_number' => $table_number,
'number_of_people' => $table_size,
);
if($this->process_resto_list->insert_reservation($values))
redirect('reservation_test/reservation', 'location');
//print_r($values);
}
Here's my model
public function insert_reservation($values)
{
date_default_timezone_set("Asia/Manila");
$data = array(
'resto_id' => $values['resto_id'],
'diner_id' => $values['user_id'],
'date' => date('Y-m-d'),
'start_time' => $values['start'],
'end_time' => $values['end'],
'table_number' => $values['table_number'],
'number_of_people' => $values['table_size'],
);
return $this->db->insert('resto_reservations', $data);
}
When using print_r here's the result of the array
Array ( [resto_id] => 9 [diner_id] => 14 [date] => [start_time] => 11:00 [end_time] => 13:00 [table_number] => 6 [number_of_people] => 4 )
Please help me point out the error. Thank you
In your model. Change values as follows
$data = array(
'resto_id' => $values['resto_id'],
'diner_id' => $values['diner_id'],
'date' => date('Y-m-d'),
'start_time' => $values['start_time'],
'end_time' => $values['end_time'],
'table_number' => $values['table_number'],
'number_of_people' => $values['number_of_people'],
);
I just replaced my model with this. Thanks everyone!
$data = array(
'resto_id' => $values['resto_id'],
'diner_id' => $values['diner_id'],
'date' => date('Y-m-d'),
'start_time' => $values['start_time'],
'end_time' => $values['end_time'],
'table_number' => $values['table_number'],
'number_of_people' => $values['number_of_people'],
);

Unable to insert data into database using codeigniter

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;
}
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;

Categories