Для моих кодов: когда я устанавливаю флажок, он извлекает дату и цену из базы данных и выполняет расчет для получения общей цены.
Но обновляет все строки с одинаковым значением.
Я пытался установить флажок 3, и var_dump указывал общую цену, и результаты верны.
Но я хочу обновить базу данных, она обновила все строки с одинаковым значением.
Контроллер:
$PledgeCheckbox = ($this->input->post('batch_pledge[]') ? '1' : '0');
//$Pledge_No = $this->input->post('batch_pledge[]'); //return value of pledge_id
if($PledgeCheckbox == '1'){
$Pledge_No = $this->input->post('batch_pledge[]'); //return value of pledge_id
//take the stg_fee_per_mth from database and calculate $Total_Stg_Fee
$Pledge = $this->pledge->GetPledgeStgFee($Pledge_No);
foreach($Pledge as $row){
$Stg_fee_per_mth = $row->stg_fee_per_mth;
$Pledge_date = $row->pledge_date;
$DATE_NOW = strtotime($Cur_date);
$DATE_PREV = strtotime($Pledge_date);
$Year1 = date('y', $DATE_NOW);
$Year2 = date('y', $DATE_PREV);
$Month_Now = date('m', $DATE_NOW);
$Month_Prev = date('m', $DATE_PREV);
$Month_diff = (($Year1 - $Year2)*12)+($Month_Now - $Month_Prev);
if($Month_diff !== 0){
$Total_Stg_Fee = $Stg_fee_per_mth * $Month_diff;
//update $Total_Stg_fee in database
$this->pledge->UpdatePledgeTotalStgFee($Total_Stg_Fee,$Month_diff);
//var_dump($Total_Stg_Fee);
}else{
//if $Month_diff == 0, $Stg_fee_per_mth must multiple with 1, if not $Total_stg_Fee will become 0
$Month_diff = 1;
$Total_Stg_Fee = $Stg_fee_per_mth * 1;
//update $Total_Stg_fee in database
$this->pledge->UpdatePledgeTotalStgFee($Total_Stg_Fee,$Month_diff);
//var_dump($Total_Stg_Fee);
}
}
$data['pledge'] = $this->pledge->FetchPledge2Renew($Pledge_No);
$this->load->view('auth/header',$data);
$this->load->view('pledge/batch_renew_pledge',$data);
$this->load->view('pledge/footer',$data);
}
Модель:
public function UpdatePledgeTotalStgFee($Total_Stg_Fee,$Month_diff){
$post = $this->input->post();
//$Month_diff = $post;
//$Total_Stg_Fee = $post;
foreach($post['batch_pledge'] as $k => $value){
$TotalStgFee[] = array(
'pledge_id' => $value,
'no_of_mth' => $Month_diff,
'total_stg_fee' => $Total_Stg_Fee
);
}
$this->db->update_batch('pledge',$TotalStgFee,'pledge_id'); //('table','array','condition')
}
вывод var_dump ($ TotalStgFee)
C:\wamp64\www\kde\store\application\models\Pledge_model.php:683:
array (size=2)
0 =>
array (size=3)
'pledge_id' => string '27' (length=2)
'no_of_mth' => int 1
'total_stg_fee' => float 20
1 =>
array (size=3)
'pledge_id' => string '21' (length=2)
'no_of_mth' => int 1
'total_stg_fee' => float 20
C:\wamp64\www\kde\store\application\models\Pledge_model.php:683:
array (size=2)
0 =>
array (size=3)
'pledge_id' => string '27' (length=2)
'no_of_mth' => int 36
'total_stg_fee' => float 900
1 =>
array (size=3)
'pledge_id' => string '21' (length=2)
'no_of_mth' => int 36
'total_stg_fee' => float 900