2012-06-25 7 views
14

Was ist die einfachste Möglichkeit, Berichte im Codeigniter-Framework zu generieren? Gibt es eine Bibliothek für diese Aufgabe? Abgesehen davon, welche anderen Ressourcen dafür zur Verfügung stehen.Berichte in Codeigniter

+0

Meiner Erfahrung nach habe ich nichts gefunden. Vielleicht weiß ich, welche Art von Bericht genau Sie suchen? – LoganPHP

+0

Ich möchte einen Bericht aus einer Abfrage generieren. Sollte jedes Format csv, pdf oder sonst –

Antwort

41

Eine gute Lösung gefunden. Wenn Sie Berichte im CSV-Format erstellen möchten, ist es sehr einfach mit Code-Signierer. Ihre Modellfunktion

function index(){ 
return $query = $this->db->get('my_table'); 
    /* 
    Here you should note i am returning 
    the query object instead of 
    $query->result() or $query->result_array() 
    */ 
}  

Jetzt im Controller

function get_report(){ 
    $this->load->model('my_model'); 
    $this->load->dbutil(); 
    $this->load->helper('file'); 
    /* get the object */ 
    $report = $this->my_model->index(); 
    /* pass it to db utility function */ 
    $new_report = $this->dbutil->csv_from_result($report); 
    /* Now use it to write file. write_file helper function will do it */ 
    write_file('csv_file.csv',$new_report); 
    /* Done */ 
} 

keine Äußerlichkeiten erforderlich sind, ist alles in codeigntier zur Verfügung. Prost! Wenn Sie XML-Datei schreiben möchten, ist es auch einfach.
Verwenden Sie einfach xml_from_result() Methode von dbutil und verwenden Sie write_file('xml_file.xml,$new_report) Besuchen Sie diese Links, die Ihnen helfen werden.

Database Utility Class

Und

File Helper

+0

dies funktioniert für Excel-Datei Sir? – wewe

+0

@wewe Ich habe dies nie für Excel-Datei getestet, aber Sie können testen und Erwähnung –

+0

, wie Sie den Namen des Datenbankfelds void? nur die Aufzeichnung zeigen? auf CSV – wewe

0

komplette Erklärung:

Modell:

class Csv_m extends MY_Model { 
function getCSV() { 
    $sql = "SELECT * FROM tablename"; 
    return $this->db->query($sql); 
} 
} 

Controller:

class Generate extends CI_Controller { 
var $file_path; 
public function __construct() { 
    parent::__construct(); 
    $this->file_path = realpath(APPPATH . '../assets/csv'); 
} 
function index() { 
    $this->load->model('csv_m'); 
    $this->load->dbutil(); 
    $this->load->helper('file'); 
    //get the object 
    $report = $this->csv_m->getCSV(); 

    $delimiter = ","; 
    $newline = "\r\n"; 
    $new_report = $this->dbutil->csv_from_result($report, $delimiter, $newline); 
    // write file 
    write_file($this->file_path . '/csv_file.csv', $new_report); 
    //force download from server 
    $this->load->helper('download'); 
    $data = file_get_contents($this->file_path . '/csv_file.csv'); 
    $name = 'name-'.date('d-m-Y').'.csv'; 
    force_download($name, $data); 
} 
} 
0

Ich habe dies für meine .csv-Berichte verwendet. es hat die Möglichkeit, Datenbankfelder Namen in CSV-Datei zu ändern. Hier ist der Code.

public function export_csv() { 
    $file_name = 'File_name_'.date("Y-m-d h-i-s").'.csv'; 
    $query = $this->db->query('SELECT 
     id as "Id", // id is table id and Id is the csv header field. 
     franchiseopt as "Nearest Location", 
     hear_about_us as "How did you hear about us?", 
     specify as "Specify", 
     email as "Email", 
     noguests as "Number of Guests", 
     eventdate as "Date of Event", 
     name as "Your Name", 
     phone as "Phone Number", 
     locationevent as "Location of Event", 
     message as "More Details" 
     FROM TABLE_NAME ORDER BY id DESC'); 

    $this->load->dbutil(); 
    $data = $this->dbutil->csv_from_result($query); 
    $this->load->helper('download'); 
    force_download($file_name, $data); 
    exit(); 
} 

Offensichtlich müssen Sie Datenbanktabellenfelder entsprechend Ihrer Tabelle ersetzen.