it-swarm.com.ru

Отчеты в Codeigniter

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

14
Muhammad Raheel

Нашел хорошее решение сам. Если вы хотите создавать отчеты в формате 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. Cheers! Если вы хотите написать XML-файл, это тоже легко.
Просто используйте xml_from_result() метод dbutil и используйте write_file('xml_file.xml,$new_report) Посетите эти ссылки, они помогут. 

Класс утилиты базы данных

А также 

File Helper

42
Muhammad Raheel

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

Модель:

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);
}
}
0
Royal David

Я использовал это для моих отчетов .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();
}

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

0
Adnan Ahmad