【问题标题】:setting up a unique column in mysql and showing flashdata in codeigniter在 mysql 中设置一个唯一列并在 codeigniter 中显示 flashdata
【发布时间】:2021-11-23 14:26:38
【问题描述】:

我有一个 codeigniter 网站,我有一个唯一的列,要求用户使用输入字段插入数据,如果用户尝试在默认情况下在列中添加重复值,则不会插入数据,所以我试图根据它设置flash数据:

function import_domestic_excel_data(){

if(isset($_FILES["file"]["name"])){
   $path = $_FILES["file"]["tmp_name"];
   $object = PHPExcel_IOFactory::load($path);
   foreach($object->getWorksheetIterator() as $worksheet){
       $highestRow = $worksheet->getHighestRow();
       $highestColumn = $worksheet->getHighestColumn();
       for($row=2; $row<=$highestRow; $row++){
 $sendername = $worksheet->getCellByColumnAndRow(0, $row)->getValue();
 $senderreference = $worksheet->getCellByColumnAndRow(1, $row)->getValue();
  if(!empty($sendername)){
               $data[] = array(
                   'sendername'  => $sendername,
                   'senderreference'   => $senderreference,
               );
           }
}
       $response=$this->excel_import_model->insert_excel($data);
   if($response){
    $this->session->set_flashdata("Success","Data Added Successfully !");
    redirect('listconsignment' , 'refresh');
}
  else{
   $this->session->set_flashdata("Error","Data Upload Error !");
    redirect('listconsignment' , 'refresh');
  }
 }
 
}
}

现在的问题是,无论结果如何,如果数据被上传或数据没有被上传,我只会得到 flashdata 中设置的错误消息,而不仅仅是 flashdata,我尝试简单地回显“错误”和“成功” ,如果数据成功上传,也会出现回显错误。谁能告诉我这里有什么问题。提前致谢

【问题讨论】:

    标签: php mysql database codeigniter codeigniter-3


    【解决方案1】:

    我认为问题在于您将set_flashdata 放入foreach

    foreach ($object->getWorksheetIterator() as $worksheet) {
       ...
    }
    

    也许在循环的最后一个$worksheet 上总会有一个$response = false。所以会话总是会出错。在foreach外面拿块检查$response就可以解决这个问题:

    $result = false;
    foreach ($object->getWorksheetIterator() as $worksheet) {
        ....
        $response = $this->excel_import_model->insert_excel($data);
        if ($response) {
            $result = true; // Change to condition to set true to what you want
        }
    }
    if($result){
        $this->session->set_flashdata("Success", "Data Added Successfully !");
        redirect('listconsignment', 'refresh');
    }
    else {
        $this->session->set_flashdata("Error", "Data Upload Error !");
        redirect('listconsignment', 'refresh');
    }
    

    【讨论】:

    • 试过了,同样的错误。只有数据上传错误快闪来了
    • 您能否echo $result 确保它是正确的值
    • 并确保您以正确的方式从会话中获取值,例如:$this-&gt;session-&gt;flashdata('Success'); 我认为如果您只是回显“错误”和“成功”,但它可能不起作用你得到的会话值有问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-10
    • 1970-01-01
    • 1970-01-01
    • 2017-06-17
    相关资源
    最近更新 更多