Как вставить несколько динамических данных с помощью CodeIgniter? - PullRequest
0 голосов
/ 02 июля 2019

Я использую CodeIgniter, я отображаю поля динамически. Теперь я должен вставить данные в базу данных. Поэтому я попробовал приведенный ниже код.

$order = $this->input->post('order[]');
$partner = $this->input->post('parner[]');
$bankname = $this->input->post('newpartner[]');
$status = $this->input->post('filestatus[]');
$user_id = $this->input->post('user_id');

$order_length = sizeof($order);

for ($j = 0; $j < $order_length; $j++) {

  if (($status = 1) || ($status = 3)) {
    $remark = $this->input->post('remark[]');
  } else {
    $remark = "";
  }

  if (($status = 2) || ($status = 4))) {
  $reasonDate = $this->input-> post('reasonDate[]');
  $remark = $this->input-> post('remark[]');
} else {
  $reasonDate = "";
  $remark = "";

}

if ($status = 7) {
  $reasonAmt = $this->input->post('reasonAmt[]');
  $reason = $this->input->post('reason[]');
} else {
  $reasonAmt = "";
  $reason = "";
}


$data['row'] = array(
  'order' => $order[$j],
  'bankname' => $bankname[$j],
  'status' => $status[$j],
  'lead_id' => $user_id,
  'remark' => $remark[$j],
  'reasonDate' => $reasonDate[$j],
  'reasonAmt' => $reasonAmt[$j],
  'reason' => $reason[$j]
);
$save = array(
  'b_orderno' => $data['row']['order'],
  'b_bankname' => $data['row']['bankname'],
  'b_filestatus' => $data['row']['status'],
  'p_id' => $data['row']['pid'],
  'lead_id' => $data['row']['lead_id'],
  'b_remark' => $data['row']['remark'],
  'b_date' => $data['row']['reasonDate'],
  'b_amt' => $data['row']['reasonAmt'],
  'b_reason' => $data['row']['reason']
);

$afterxss = $this->security-> xss_clean($save);
if ($afterxss) {
  $this - > db - > insert('tbl_bankdata', $afterxss);
  $response['error'] = "true";
  $response['msg'] = "added successfully";

} else {
  $response['error'] = "false";
  $response['msg'] = "Sometning wrong! please check the internet connection and try again";
}

}
echo json_encode($response);

Я получаю сообщение о проблеме в поле состояния, поскольку в зависимости от значения поля будет отображаться поле ввода. Также я использовал условие If в логике для поля состояния. Каждая строка имеет уникальное поле статуса.

Вы найдете мой HTML и скрипт в ссылке ниже.

https://jsfiddle.net/08phzue3/

Это мой скриншот пользовательского интерфейса. Игнорируйте значение, которое предназначено только для целей тестирования.

1) При загрузке отобразится enter image description here 2) Если пользователь выбирает статус enter image description here 3) Если несколько строк enter image description here

Не могли бы вы помочь мне с этим?

1 Ответ

0 голосов
/ 02 июля 2019

На самом деле вы не сравниваете здесь:

if (($status = 1) || ($status = 3)) {

Вы присваиваете значения вашей $status переменной

это должно быть:

if (($status == 1) || ($status == 3)) {

Примечание: то же самое для других условий.

Редактировать:

Как вы упомянули, вы получаете массив в $status, поэтому использование сравнения не является правильной логикой, есть несколько доступных решений,

Вы можете использовать in_array(), например:

if(in_array(1, $status) || in_array(3, $status)){
    $remark = $this->input->post('remark[]');   
}
else{
    $remark = "";   
}

Окончательные решения (04-07-2019):

После изменениядля массивов $save и $data проблема исправлена ​​для OP:

$save['b_orderno'] = $order[$j]; 
$save['b_bankname'] = $bankname[$j]; 
$save['b_filestatus'] = $status[$j]; 
$save['p_id'] = $partner[$j]; 
$save['lead_id'] = $user_id; 


if(!empty($remark[$j])){ 
$save['b_remark'] = $remark[$j]; 
} 
if(!empty($reasonDate[$j])){ 
$save['b_date'] = $reasonDate[$j]; 
} 
if(!empty($message[$j])){ 
$save['b_message'] = $message[$j]; 
} 
if(!empty($reasonAmt[$j])){ 
$save['b_amt'] = $reasonAmt[$j]; 
} 
if(!empty($reason[$j])){ 
$save['b_reason'] = $reason[$j]; 
}


$data['row']['order'] = $order[$j]; 
$data['row']['bankname'] = $bankname[$j]; 
$data['row']['status'] = $status[$j]; 
$data['row']['lead_id'] = $user_id; 
$data['row']['remark'] = $remark[$j]; 
$data['row']['reasonDate'] = $reasonDate[$j]; 

if(!empty($reasonAmt[$j])){ 
$data['row']['reasonAmt'] = $reasonAmt[$j]; 
} 
if(!empty($reason[$j])){ 
$data['row']['reason'] = $reason[$j]; 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...