2012-06-25 17 views
14

Jaki jest najbardziej uproszczony sposób generowania raportów w ramach Codeigniter? Czy istnieje jakaś biblioteka dostępna do wykonania tego zadania? Oprócz wykreślania, jakie są inne zasoby, aby to zrobić.Raporty w Codeigniter

+0

Z mojego doświadczenia wynika, że ​​nic nie znalazłem. Czy mogę się dowiedzieć, jaki typ raportu dokładnie widzisz? – LoganPHP

+0

Chcę wygenerować raport z zapytania. Powinien być jakiś format csv, pdf lub inaczej –

Odpowiedz

41

Sam znalazłem dobre rozwiązanie. Jeśli chcesz generować raporty w formacie csv, to bardzo łatwo z codeigniter. Twoja funkcja modelu

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() 
    */ 
}  

Teraz w kontrolerze

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 */ 
} 

Nie są wymagane żadne pozory wszystko jest dostępne w codeigntier. Twoje zdrowie! Jeśli chcesz napisać plik xml, to też jest łatwe.
Po prostu użyj metody xml_from_result() dbutil i użyj write_file('xml_file.xml,$new_report) Odwiedź te linki, które pomogą.

Database Utility Class

I

File Helper

+0

to działa dla pliku Excela? – wewe

+0

@wewe Nigdy nie testowałem tego dla pliku Excela, ale możesz przetestować i wspomnieć o –

+0

jak unieważnić nazwę pola bazy danych? tylko show płytowe? na CSV – wewe

0

Pełne wyjaśnienie:

Model:

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

Kontroler:

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

Użyłem tego do moich raportów .csv. ma możliwość zmiany nazwy pól bazy danych w pliku csv. tutaj jest kod.

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

Oczywiście Należy wymienić pola tabeli bazy danych zgodnie z tabelą.