Я ищу веб-платформу отчетности, которая основана на PHP и работает с MySQL.
Вот моя проблема (помимо того, что я слишком ленив, чтобы запрограммировать это самостоятельно): у меня есть большая таблица (50k + rows), в которой хранятся данные журнала для нескольких клиентов. Эти клиенты должны иметь возможность сортировать и искать и делать все эти грандиозные вещи.
Мне действительно понравилось бы что-то с приличным количеством энергии за этим, и именно поэтому я опасаюсь построить его самостоятельно. Это недостаточно для того, чтобы заслуживать чрезмерного количества времени, но это является необходимой функцией для моих клиентов.
В идеале, я бы хотел, чтобы какая-то структура, которую я могу либо передавать, либо сам получить данные с помощью механизма шаблонов (так что это сделает всю презентацию). Я мог бы получить визуализированную презентацию и перенести ее на свой сайт.
Что-то приятное, вероятно, не существует, но, может быть, мне повезет.
Я нашел достойную замену, которая подходит мне очень хорошо: плагин Symfony под названием laiguExtGridPlugin . Это не фреймворк, но он использует вызовы JSON для получения данных и отображения их с сортировкой и разбиением на страницы. Я еще не реализовал его, но сегодня я буду читать исходный код, чтобы посмотреть, как это сделать – в плагине очень мало документации, идите по фигуре. В конце концов, я опубликую что-нибудь в своем блоге, когда я его реализую.
Обновление: laiguExtGridPlugin был реализован, но он сидит ontop библиотеки Javascript под названием ext . Эта библиотека массивная, более 27 мегабайт. Это для полной библиотеки. Часть, которую я использую, составляет около 100 КБ. Я также использую jQuery, поэтому загрузка обеих библиотек (что, к счастью, это только для одной страницы) совершенно неприемлема. Я переключусь на систему сетки jQuery.
Я также нашел коммерчески лицензированный плагин jQuery под названием jqGrid от Trirand. Это немного отличается от моего ценового диапазона в 599 долларов за лицензию на одно место с подпиской, источником и приоритетной поддержкой или 450 долларов за лицензию. Тем не менее, он выглядит довольно хорошо и очень напоминает мне о новых пользовательских интерфейсах Msoft Office.
На данный момент первый будет очень хорош; однако, я собираюсь оглянуться на рамки. Я могу просто сделать это сам.
Если у вас уже нет, я бы попробовал предложение Романа. Agiletoolkit под 6 Мбайт для всего и загружает только те части, которые вам нужны на странице, но пример, который он предоставил в приведенном выше коде, – это все, что вам нужно, чтобы создать сетку, отображающую данные из таблицы.
Строка setSource определяет, какая таблица будет извлекаться из mysql, в этом случае таблица «пользователь»
$g->setSource('user');
и если вам нужно принудительно ввести ограничение на возвращаемые строки, а не позволить пользователю фильтровать их, например, просто перечисляя парней, вы можете добавить
$g->addCondition('gender','M');
Я думаю, что есть несколько опций экспорта для MVCGrid в каталоге atk4-addons, поэтому вы можете добавить экспорт данных Excel или PDF в сетку, хотя у меня не было времени самостоятельно изучить эти параметры – просто заметил export.php в аддонов.
Это можно сделать просто в Agile Toolkit , который также будет интегрировать jQuery и AJAX.
1.git clone git: //github.com/atk4/atk4.git
(альтернативно вы можете скачать комплект)
2.config.php:
<?php $config["atk"]["base_path"]="./atk4/"; $config["dsn"]='mysql://root:root@localhost/project'; $config['url_postfix']='.php';
3.index.php:
<?php include'atk4/loader.php'; class MyApp extends ApiFrontend { function init(){ parent::init(); $this->add('jUI'); $this->add('BasicAuth')->allow('demo','demo')->check(); $this->add('Menu',null,'Menu') ->addMenuItem('report','index') ->addMenuItem('logout'); } function page_index($p){ $this->dbConnect(); $f=$p->add('Filter',null,null,array('form_empty')); $f->addField('line','name'); $f->addField('line','surname'); $f->addSubmit('Search'); $g=$p->add('Grid'); $g->setSource('user'); $g->addColumn('text','gender')->makeSortable(); $g->addColumn('text','name')->makeSortable(); $g->addColumn('text','surname')->makeSortable(); $g->addPaginator(25); $f->useDQ($g->dq); } } $api=new MyApp('myapp'); $api->main();
из<?php include'atk4/loader.php'; class MyApp extends ApiFrontend { function init(){ parent::init(); $this->add('jUI'); $this->add('BasicAuth')->allow('demo','demo')->check(); $this->add('Menu',null,'Menu') ->addMenuItem('report','index') ->addMenuItem('logout'); } function page_index($p){ $this->dbConnect(); $f=$p->add('Filter',null,null,array('form_empty')); $f->addField('line','name'); $f->addField('line','surname'); $f->addSubmit('Search'); $g=$p->add('Grid'); $g->setSource('user'); $g->addColumn('text','gender')->makeSortable(); $g->addColumn('text','name')->makeSortable(); $g->addColumn('text','surname')->makeSortable(); $g->addPaginator(25); $f->useDQ($g->dq); } } $api=new MyApp('myapp'); $api->main();
Особенности: разбиение на страницы, сортировка, фильтрация, и вы можете настроить все. Agile toolkit имеет обширную документацию и учебную книгу.
Вы можете войти в систему с помощью u: demo, p: demo
PHPRunner – генератор кода PHP
Есть и это , но я не знаю, хотите ли вы, чтобы он был бесплатным.
Также есть инструмент для создания кросс-платформенных инструментов (который не находится в PHP).
Вы можете попробовать KoolReport .
Отказ от ответственности: Я работаю над этим проектом.
Это фреймворк отчетности, именно то, что вы ищете. Вы можете загружать фреймворк через веб-сайт, клонировать проект из github или использовать композитор для установки: для composer require koolphp/koolreport
.
После установки здесь приведен базовый пример создания отчета о продаже
index.php
: это файл начальной загрузки
<?php require_once "SalesByCustomer.php"; $salesByCustomer = new SalesByCustomer; $salesByCustomer->run()->render();
SaleByCustomer.php
: Этот файл определяет соединение и процесс передачи данных
<?php require_once "koolreport/autoload.php"; use \koolreport\processes\Group; use \koolreport\processes\Limit; use \koolreport\processes\Sort; class SalesByCustomer extends \koolreport\KoolReport { public function settings() { return array( "dataSources"=>array( "sales"=>array( "connectionString"=>"mysql:host=localhost;dbname=db_sales", "username"=>"root", "password"=>"", "charset"=>"utf8" ) ) ); } public function setup() { $this->src('sales') ->query("SELECT customerName,dollar_sales FROM customer_product_dollarsales") ->pipe(new Group(array( "by"=>"customerName", "sum"=>"dollar_sales" ))) ->pipe(new Sort(array( "dollar_sales"=>"desc" ))) ->pipe(new Limit(array(10))) ->pipe($this->dataStore('sales_by_customer')); } }
SalesByCustomer.view.php
: этот файл представления, в котором вы можете визуализировать данные
<?php use \koolreport\widgets\koolphp\Table; use \koolreport\widgets\google\BarChart; ?> <div class="text-center"> <h1>Sales Report</h1> <h4>This report shows top 10 sales by customer</h4> </div> <hr/> <?php BarChart::create(array( "dataStore"=>$this->dataStore('sales_by_customer'), "width"=>"100%", "height"=>"500px", "columns"=>array( "customerName"=>array( "label"=>"Customer" ), "dollar_sales"=>array( "type"=>"number", "label"=>"Amount", "prefix"=>"$", ) ), "options"=>array( "title"=>"Sales By Customer" ) )); ?> <?php Table::create(array( "dataStore"=>$this->dataStore('sales_by_customer'), "columns"=>array( "customerName"=>array( "label"=>"Customer" ), "dollar_sales"=>array( "type"=>"number", "label"=>"Amount", "prefix"=>"$", ) ), "cssClass"=>array( "table"=>"table table-hover table-bordered" ) )); ?>
И вот результат .
В принципе, вы можете одновременно получать данные из многих источников данных, транслировать их через процессы, а затем сохранять результат в хранилище данных. Затем данные в хранилище данных будут доступны в представлении для получения визуализации. Графики Google интегрированы в рамки, поэтому вы можете сразу использовать красивые диаграммы и графики.
Хорошо, вот несколько хороших ссылок:
Надеюсь, это поможет.
есть несколько инструментов, которые, я считаю, могут вам помочь:
http://mydbr.com/ : Может помочь вам преобразовать ваши SQL-запросы в профессиональные отчеты
http://mysqlreports.com : интерфейс стиля мастера, который может помочь вам создавать отчеты PHP для MySQL (вы можете так искать и сортировать), он поддерживает логин участника