2012-06-25 40 views
14

Cách đơn giản nhất để tạo báo cáo trong khuôn khổ Codeigniter là gì? Có thư viện nào để thực hiện tác vụ này không? Ngoại trừ việc lập biểu đồ các nguồn lực khác để làm điều này là gì.Báo cáo trong Codeigniter

+0

Theo kinh nghiệm của tôi, tôi không tìm thấy bất kỳ điều gì. Tôi có thể biết chính xác loại báo cáo bạn đang tìm kiếm không? – LoganPHP

+0

tôi muốn tạo báo cáo từ truy vấn. Nên có bất kỳ định dạng csv, pdf hoặc else –

Trả lời

41

Tìm thấy một giải pháp tốt đẹp cho bản thân mình. Nếu bạn muốn tạo báo cáo ở định dạng csv, nó rất dễ dàng với người viết mã. chức năng Mô hình của bạn

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

Bây giờ trong điều khiển

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

Không externals được yêu cầu tất cả mọi thứ có sẵn trong codeigntier. Chúc mừng! Nếu bạn muốn viết tập tin xml nó cũng dễ dàng.
Chỉ cần sử dụng xml_from_result() phương pháp dbutil và sử dụng write_file('xml_file.xml,$new_report) Truy cập các liên kết này mà chúng sẽ trợ giúp.

Database Utility Class

File Helper

+0

này đang làm việc cho excel tập tin thưa ông? – wewe

+0

@wewe tôi chưa bao giờ thử nghiệm tệp excel này nhưng bạn có thể kiểm tra và đề cập đến –

+0

cách làm mất hiệu lực tên trường cơ sở dữ liệu? chỉ có chương trình thu âm? trên CSV – wewe

0

Toàn bộ lời giải thích:

mẫu:

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

Bộ điều khiển:

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

Tôi đã sử dụng tính năng này cho báo cáo .csv của mình. nó có khả năng thay đổi tên trường cơ sở dữ liệu trong tệp csv. đây là mã.

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

Rõ ràng bạn cần phải thay thế các trường bảng cơ sở dữ liệu theo bảng của bạn.

Các vấn đề liên quan