web-dev-qa-db-fra.com

Rapports dans Codeigniter

Quel est le moyen le plus simple de générer des rapports dans le framework Codeigniter? Existe-t-il une bibliothèque disponible pour effectuer cette tâche? Excepté la cartographie, quelles sont les autres ressources pour le faire?.

14
Muhammad Raheel

J'ai trouvé une solution intéressante moi-même. Si vous voulez générer des rapports au format csv, c’est très facile avec codeigniter. Votre fonction de modèle 

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

Maintenant dans le contrôleur

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

Aucun externe n'est requis, tout est disponible dans codeigntier. Cheers! Si vous voulez écrire un fichier XML, c'est aussi facile.
Utilisez simplement la méthode xml_from_result() de dbutil et utilisez write_file('xml_file.xml,$new_report) Visitez ces liens qui vous aideront. 

Classe d'utilitaire de base de données

Et 

File Helper

42
Muhammad Raheel

Explication complète:

Modèle:

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

Manette:

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

Je l'ai utilisé pour mes rapports .csv. Il permet de modifier le nom des champs de la base de données dans un fichier csv. voici le 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();
}

Évidemment, vous devez remplacer les champs de la table de la base de données en fonction de votre table.

0
Adnan Ahmad