CodeIgniter: экспорт данных из базы данных в Excel и загрузка

#php #mysql #excel #codeigniter #export-to-excel

#php #mysql #excel #codeigniter #экспорт в excel

Вопрос:

Я работаю над проектом, который требует экспорта данных из базы данных MYSQL в зависимости от множества условий. Я имею в виду это:

Это мой исходный код:

 public function exportExcelData($records)
{
  $heading = false;
        if (!empty($records))
            foreach ($records as $row) {
                if (!$heading) {
                    // display field/column names as a first row
                    echo implode("t", array_keys($row)) . "n";
                    $heading = true;
                }
                echo implode("t", ($row)) . "n";
            }
 }

public function fetchDataFromTable()
{
     $query =$this->db->get('one_piece_characters'); // fetch Data from table
     $allData = $query->result_array();  // this will return all data into array
     $dataToExports = [];
     foreach ($allData as $data) {
        $arrangeData['Charater Name'] = $data['name'];
        $arrangeData['Charater Profile'] = $data['profile'];
        $arrangeData['Charater Desc'] = $data['description'];
        $dataToExports[] = $arrangeData;
  }
  // set header
  $filename = "dataToExport.xls";
                header("Content-Type: application/vnd.ms-excel");
                header("Content-Disposition: attachment; filename="$filename"");
  $this->exportExcelData($dataToExports);
 }
  

Если я использую его без какого-либо предложения where, он выдает всю таблицу целиком.

Если я использую только одно предложение where, оно работает хорошо.

Но, если я использую несколько условий where. это дает мне пустой лист Excel.

Есть ли у кого-нибудь идеи относительно того, как заставить его работать с несколькими условиями where?

Комментарии:

1. Вы уверены, что в вашей базе данных есть какие-либо данные, которые соответствуют вашим multiple conditions ?

2. покажите ваше условие where?

3. Попробуйте echo $this->db->last_query() с вашими несколькими условиями и выполните тот же запрос в вашей database phpmyadmin редакции и проверьте, получаете ли вы какие-либо результаты

4. @Zeeshan запрос выглядит следующим select * from dept where deptid=5 and deptname="motor" образом, и он не возвращает никаких данных. Это дает пустой лист Excel

5. Вы пытались запустить тот же запрос в базе данных напрямую, и если вы можете получить какой-либо результат

Ответ №1:

Попробуйте использовать этот код в файле модели:

 function createcsv(){
        $this->load->dbutil();
        $this->load->helper('file');
        $this->load->helper('download');
        $delimiter = ",";
        $newline = "rn";
        $filename = "filename.csv";
        $query = "SELECT * FROM YourTable"; //USE HERE YOUR QUERY
        $result = $this->db->query($query);
        $data = $this->dbutil->csv_from_result($result, $delimiter, $newline);
        force_download($filename, $data);

    }
  

Ответ №2:

// ecport список содержимого в csv ,

 public function cnt_explode(){

$csvData[] =array(  "Name", "Email Id","Mobile No.","Event", "City","location","No of guest","Event Date","Budget",
                    "Venue Type","Food","Drink","Description","Date");
$data = $this->contact_model->get_contact(NULL);

foreach($data as $cnt){
$csvData[]=array(
      $cnt->name ,$cnt->email, $cnt->mobile_no, $cnt->event, $cnt->city,  $cnt->location,  $cnt->no_guest,$cnt->event_date,$cnt->budget, $cnt->venue_type,
      $cnt->food, $cnt->drink, $cnt->description,$cnt->created_on,
      );
}

header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Disposition: attachment;filename=venuexpo_".time().".csv");
header("Content-Transfer-Encoding: binary");
$df = fopen("php://output", 'w');
array_walk($csvData, function($row) use ($df) {
  fputcsv($df, $row);
});
fclose($df);
}

///------------ downlode csv done --------------