#php #mysql #database #codeigniter #codeigniter-3
Вопрос:
у меня есть веб-сайт codeigniter, где у меня есть уникальный столбец, пользователям предлагается вставлять данные с помощью полей ввода, если пользователь попытается добавить повторяющееся значение в столбец по умолчанию, данные не будут вставлены, поэтому я пытаюсь настроить флэш-данные в соответствии с ним:
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, я попытался просто повторить «ошибка» и «успех», а также его повторную ошибку, если данные успешно загружены. кто-нибудь может, пожалуйста, сказать мне, что здесь может быть не так. заранее спасибо
Ответ №1:
Я думаю, проблема в том, что ты вкладываешь set_flashdata
внутрь foreach
:
foreach ($object->getWorksheetIterator() as $worksheet) {
...
}
Может быть $response = false
, в конце цикла всегда $worksheet
будет «а». Таким образом, это всегда приведет к ошибке в сеансе. Возьмите блок для проверки $response за пределами foreach, это решит эту проблему:
$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');
}
Комментарии:
1. пробовал, братан, та же ошибка. приходит только вспышка ошибки загрузки данных
2. Не могли бы вы
echo $result
убедиться, что это правильное значение3. И убедитесь, что вы правильно извлекли значение из сеанса, например:
$this->session->flashdata('Success');
я думаю, что если вы просто повторяете «ошибка» и «успех», но это не сработало, возможно, в том, как вы получаете значение сеанса, что-то не так