【问题标题】:How to insert multiple dynamic data using CodeIgniter?如何使用 CodeIgniter 插入多个动态数据?
【发布时间】:2019-07-04 15:19:21
【问题描述】:

我正在使用 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)Onload 这将显示 2)如果用户选择状态 3)如果多行

你能帮我解决这个问题吗?

【问题讨论】:

  • 答案已更新...

标签: php html codeigniter-3


【解决方案1】:

其实你不是在这里比较:

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

【讨论】:

  • 哦!给我一些时间检查。你能检查我的逻辑,它是正确的吗?直到我用我的更新你的答案。
  • @questionbank:我认为它的逻辑不正确,因为您使用 filestatus[] 作为数组并像字符串一样检查..
  • @questionbank: $this-&gt;input-&gt;post('filestatus[]') 这将返回一个值还是多个值?
  • 这是 $this->input->post('filestatus[]') 数组的输出 ( [0] => 1 [1] => 3 [2] => 2 [3 ] => 3)
  • 你也可以在这里查看stackoverflow.com/questions/56839049/…
猜你喜欢
  • 2015-08-21
  • 2018-12-21
  • 1970-01-01
  • 1970-01-01
  • 2021-01-23
  • 1970-01-01
  • 2019-12-27
  • 1970-01-01
  • 2014-09-07
相关资源
最近更新 更多