2016-10-01 1 views
1

Ich arbeite an einem Projekt, das abhängig von den verschiedenen Bedingungen den Export von Daten aus MYSQL DB erfordert. Ich beziehe mich this:CodeIgniter: Exportieren von Daten aus der Datenbank in Excel und Download

Das ist mein Quellcode ist:

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

Wenn ich es ohne where-Klausel verwenden, wird es gesamte Tabelle zu geben.

Wenn ich nur einzelne Where-Klausel verwenden, funktioniert es gut.

Bur, wenn ich mehrere wo Bedingungen verwenden. es gibt mir ein leeres Excel-Blatt.

Hat jemand eine Idee, wie man es mit mehreren Bedingungen machen kann?

+0

Sind Sie sicher, dass alle Daten in Ihrem db da sind, die Ihr passt 'mehrere Bedingungen? –

+0

zeigen Sie, wo Bedingung? –

+0

Versuchen Sie echo '$ this-> db-> last_query()' mit Ihren multiplen Bedingungen und führen Sie die gleiche Abfrage in Ihrer 'Datenbank' oder' phpmyadmin' aus und prüfen Sie, ob Sie irgendwelche Ergebnisse bekommen – Zeeshan

Antwort

3

Versuchen Sie diesen Code auf Ihrer Modelldatei:

function createcsv(){ 
     $this->load->dbutil(); 
     $this->load->helper('file'); 
     $this->load->helper('download'); 
     $delimiter = ","; 
     $newline = "\r\n"; 
     $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); 

    } 
+0

kann es funktioniert für mich..danke –

0

// ecport contect Liste in 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 -------------- 
Verwandte Themen