PHP code example of rootwork / php-report-generator
1. Go to this page and download the library: Download rootwork/php-report-generator library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
rootwork / php-report-generator example snippets
use Rootwork\Report\ReportAbstract;
use Rootwork\Report\ReportInterface;
use Rootwork\Report\Column;
use Rootwork\Report\Variable;
class MyReport extends ReportAbstract implements ReportInterface
{
/**
* @var PDO $pdo
*/
protected $pdo;
/**
* Initialize the report class with any custom dependencies you need.
*
* @param array $options
*/
public function initialize(array $options = [])
{
$this->pdo = $options['pdo'];
}
/**
* Method for setting up the report definition.
*/
protected function define()
{
$salesReps = [
'tstark' => 'Tony Stark',
'bbanner' => 'Bruce Banner',
'nfury' => 'Nick Fury',
];
$this->getDefinition()
->setTitle('My Sales Report')
->addColumn(new Column(
'orderId', 'Order ID', Column::TYPE_INTEGER, Column::FORMAT_NUMBER
))
->addColumn(new Column(
'date', 'Date', Column::TYPE_DATE, 'Y-m-d'
))
->addColumn(new Column(
'customer', 'Customer', Column::TYPE_STRING
))
->addColumn(new Column(
'salesRep', 'Sales Rep', Column::TYPE_STRING
))
->addColumn(new Column(
'amount', 'Amount', Column::TYPE_FLOAT, Column::FORMAT_CURRENCY, true
))
->addVariable(new Variable(
'startDate', 'Start Date', Variable::TYPE_DATE, date('Y-m-d'), [], 'Y-m-d'
))
->addVariable(new Variable(
'salesRep', 'Sales Rep', Variable::TYPE_SELECT, 'tstark', $salesReps
));
}
/**
* Run the report and return results.
*
* @return array[]
*/
public function run()
{
$values = $this->getDefinition()->getVariableValues();
$sql = "SELECT * FROM orders WHERE start_date >= :startDate AND sales_rep = :salesRep";
$sth = $this->pdo->prepare($sql);
$sth->execute($values);
$results = $sth->fetchAll(PDO::FETCH_ASSOC);
$rows = [];
foreach ($results as $result) {
$row = [
'orderId' => $result['order_id'],
'date' => date('Y-m-d', strtotime($result['date'])),
'customer' => $result['customer'],
'salesRep' => $result['sales_rep'],
'amount' => number_format($result['amount'], 2, ''),
];
$rows[] = $row;
}
// IMPORTANT: You must set $this->rows as an associative array of results
$this->rows = $rows;
return $this->rows;
}
}