Есть ли хорошие PHP MySQL-совместимые фреймворки для отчетов? - PullRequest
4 голосов
/ 25 марта 2011

Я ищу систему отчетности на основе веб-интерфейса, основанную на PHP и работающую с MySQL.

Вот моя проблема (помимо того, что я слишком ленив, чтобы программировать это самостоятельно): у меня есть большая таблица (50 000+ строк), в которой хранятся данные журнала для нескольких клиентов. Эти клиенты должны иметь возможность сортировать, искать и делать все эти грандиозные вещи.

Мне бы очень хотелось что-то с приличным количеством энергии, поэтому я боюсь строить его сам. Это не достаточно большая потребность в том, чтобы затратить непомерно много времени, но это необходимая функция для моих клиентов.

В идеале, я хотел бы иметь какую-то платформу, по которой я мог бы либо передавать данные, либо получать сами данные с помощью механизма шаблонов (так, чтобы он выполнял всю презентацию). Я мог бы получить отрендеренную презентацию и поместить ее на свой сайт.

Что-то такое хорошее, вероятно, не существует, но, возможно, мне повезет.

Ответы [ 6 ]

3 голосов
/ 18 мая 2017

Вы можете попробовать KoolReport .

Отказ от ответственности: я работаю над этим проектом.

Это среда отчетности php, именно то, что вы ищете. Вы можете скачать фреймворк через сайт, клонировать проект с github или использовать composer для установки: 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 Charts встроен в фреймворк, поэтому вы можете сразу же создавать прекрасные диаграммы и графики.

Хорошо, вот несколько хороших ссылок:

  1. Расширенные примеры KoolReport : См. Еще несколько хороших примеров
  2. Doc - Источники данных : Поддержка MySQL, Oracle, SQLServer, MongoDB, CSV, Microsoft Excel ..
  3. Doc - Обработка данных : Анализ и преобразование данных
  4. Doc - Визуализация данных : визуализация данных с помощью диаграмм, таблиц и т. Д.
  5. Проект на Github .

Надеюсь, это поможет.

1 голос
/ 17 сентября 2011

Если вы еще не сделали, я бы попробовал предложение Романа.Agiletoolkit занимает менее 6 МБ для всего и загружает только те части, которые вам нужны на странице, но пример, который он привел в приведенном выше коде, это все, что вам нужно для создания сетки, показывающей данные из таблицы.

Строка setSourceопределяет, какая таблица будет извлечена из mysql, в этом случае таблица 'user'

  $g->setSource('user');

и если вам нужно установить какое-то ограничение на возвращаемые строки вместо того, чтобы позволить пользователю фильтровать их, например, просто перечисляя парней,Вы можете добавить

  $g->addCondition('gender','M');

Я думаю, что есть также несколько параметров экспорта для MVCGrid в каталоге atk4-addons, так что вы можете добавить экспорт данных в формате Excel или PDF в сетке, хотя у меня не было времени исследоватьсамих этих вариантов пока нет - только что заметил export.php в каталоге дополнений.

1 голос
/ 26 марта 2011

Это можно сделать просто в Agile Toolkit , который также интегрирует jQuery и AJAX.

1.git клон 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();

Особенности: разбиение на страницы, сортировка, фильтрация, и вы можете настроить все. Agile инструментарий имеет обширную документацию и учебную книгу.

Вы можете войти с помощью u: demo, p: demo

1 голос
/ 26 марта 2011

Я нашел достойную замену, которая вполне соответствует моим потребностям: плагин Symfony под названием laiguExtGridPlugin . Это не платформа, но она использует вызовы JSON для получения данных и отображает их с сортировкой и разбиением на страницы. На самом деле я еще не реализовал это, я собираюсь прочитать исходный код сегодня вечером, чтобы увидеть, как это сделать - на плагине очень мало документации, см. Рисунок. В конечном итоге я опубликую что-то в своем блоге, как только я это осуществлю.

Обновление: laiguExtGridPlugin был реализован, но он расположен поверх библиотеки Javascript с именем ext . Эта библиотека огромная, более 27 мегабайт. Это для полной библиотеки. Часть, которую я использую, составляет около 100 КБ. Я также использую jQuery, поэтому загрузка обеих этих библиотек (что, к счастью, только для одной страницы) совершенно неприемлема. Я перейду на сетевую систему на основе jQuery.

Я также нашел коммерчески лицензированный плагин jQuery под названием jqGrid от Trirand. Это немного выше моего ценового диапазона: 599 долларов за лицензию на одно место с подпиской, источником и приоритетной поддержкой или 450 долларов за лицензию. Тем не менее, он выглядит довольно красиво и очень напоминает мне новые интерфейсы Msoft Office.

Пока первое будет хорошо; Тем не менее, я собираюсь искать рамки. Я могу просто сделать один сам.

1 голос
/ 25 марта 2011

PHPRunner - генератор кода PHP

Также есть это , но я не знаю, хотите ли вы, чтобы оно было бесплатным.

Также существует этот кроссплатформенный инструмент отчетности (которого нет в PHP).

0 голосов
/ 01 апреля 2016

есть пара инструментов, которые, как я считаю, могут вам помочь:

http://mydbr.com/: может помочь вам преобразовать ваши запросы SQL в профессиональные отчеты

http://mysqlreports.com: Интерфейс в стиле мастера, который может помочь вам создавать отчеты PHP для MySQL (вы можете искать и сортировать), он поддерживает loggin членов

...