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