Was ist die einfachste Möglichkeit, Berichte im Codeigniter-Framework zu generieren? Gibt es eine Bibliothek für diese Aufgabe? Abgesehen davon, welche anderen Ressourcen dafür zur Verfügung stehen.Berichte in Codeigniter
14
A
Antwort
41
Eine gute Lösung gefunden. Wenn Sie Berichte im CSV-Format erstellen möchten, ist es sehr einfach mit Code-Signierer. Ihre Modellfunktion
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()
*/
}
Jetzt im Controller
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 */
}
keine Äußerlichkeiten erforderlich sind, ist alles in codeigntier zur Verfügung. Prost! Wenn Sie XML-Datei schreiben möchten, ist es auch einfach.
Verwenden Sie einfach xml_from_result()
Methode von dbutil und verwenden Sie write_file('xml_file.xml,$new_report)
Besuchen Sie diese Links, die Ihnen helfen werden.
Und
0
komplette Erklärung:
Modell:
class Csv_m extends MY_Model {
function getCSV() {
$sql = "SELECT * FROM tablename";
return $this->db->query($sql);
}
}
Controller:
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
Ich habe dies für meine .csv-Berichte verwendet. es hat die Möglichkeit, Datenbankfelder Namen in CSV-Datei zu ändern. Hier ist der 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();
}
Offensichtlich müssen Sie Datenbanktabellenfelder entsprechend Ihrer Tabelle ersetzen.
Meiner Erfahrung nach habe ich nichts gefunden. Vielleicht weiß ich, welche Art von Bericht genau Sie suchen? – LoganPHP
Ich möchte einen Bericht aus einer Abfrage generieren. Sollte jedes Format csv, pdf oder sonst –