Отчеты в Codeigniter

Каков самый упрощенный способ создания отчетов в рамках Codeigniter? Есть ли доступная библиотека для выполнения этой задачи? За исключением того, что для этого используются другие ресурсы.

Ответы

Ответ 1

Нашел хорошее решение. Если вы хотите генерировать отчеты в формате csv, это очень легко с помощью codeigniter. Функция вашей модели

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

Теперь в контроллере

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

Никаких внешних условий не требуется, чтобы все было доступно в codeigntier. Ура! Если вы хотите написать xml файл, это тоже легко.
 Просто используйте метод xml_from_result() dbutil и используйте write_file('xml_file.xml,$new_report) Посетите эти ссылки, они помогут.

Класс полезности базы данных

И

File Helper

Ответ 2

Полное объяснение:

Модель:

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

Контроллер:

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

Ответ 3

Я использовал это для своих отчетов .csv. он имеет возможность изменять имя поля базы данных в файле csv. вот код.

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

Очевидно, вам нужно заменить поля таблицы базы данных в соответствии с вашей таблицей.