Há alguma estrutura de relatórios compatível com PHP MySQL por aí?

Estou à procura de um sistema de relatórios baseado na web que é baseado em PHP e trabalha com o MySQL.

Aqui está o meu problema (além de ser demasiado preguiçoso para programar isto sozinho): eu tenho uma tabela grande (50k+ linhas) que armazena dados de log para vários clientes. Estes clientes precisam de ser capazes de ordenar e procurar e fazer todas essas coisas grandiosas.

Eu gostaria de algo com uma quantidade decente de poder por trás disso, e é por isso que estou apreensivo com a construção de um. Isto não é grande coisa. necessidade suficiente para merecer colocar uma quantidade exorbitante de tempo em, mas é uma função necessária para os meus clientes.

idealmente, eu gostaria de algum tipo de framework que eu possa passar dados ou obter os dados em si com um motor de Template (para que ele faria toda a apresentação). Eu poderia obter a apresentação renderizada e deixá-lo no meu site.

Algo tão bom provavelmente não existe, mas talvez eu tenha sorte.

Author: Logan Bibby, 2011-03-25

6 answers

Pode tentar o KoolReport .

Aviso: estou a trabalhar neste projecto.

É uma estrutura de relatórios php, exactamente o que procuras. Você pode transferir o framework através do site, clonar o projeto do github ou usar o compositor para instalar: composer require koolphp/koolreport.

Depois de instalar, aqui está um exemplo básico de criar um relatório de venda

index.php: Este é o ficheiro bootstrap

<?php
require_once "SalesByCustomer.php";
$salesByCustomer = new SalesByCustomer;
$salesByCustomer->run()->render();                  

SaleByCustomer.php: este ficheiro define a ligação de dados e os dados processo

<?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: Este é o ficheiro de visualização onde poderá visualizar os dados

<?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"
    )
));
?>

E aqui está o resultado.

Basicamente você pode obter dados de muitas fontes de dados ao mesmo tempo, canalizá-los através de processos e, em seguida, armazenados resultado na data store. Os dados na data store então estarão disponíveis na vista para obter visualização. O Google Charts está integrado dentro do framework para que você possa usar imediatamente para criar gráficos bonitos e grafico.

Muito bem, aqui estão alguns bons links:
  1. KoolReport Exemplos Avançados : Ver mais alguns bons exemplos
  2. Doc-Data Sources : Support MySQL, Oracle, SQLServer, MongoDB, CSV, Microsoft Excel ..
  3. processamento de dados de COD : análise e transformação de Dados
  4. visualização de dados Doc : visualize os seus dados com gráficos, tabelas e muito mais.
  5. Project on Github .
Espero que isso ajude.
 2
Author: Tuan, 2017-05-18 12:15:33

Encontrei um substituto decente que se adequa muito bem às minhas necessidades: um 'plugin' Symfony chamadolaiguExtGridPlugin . Não é um framework, mas usa chamadas JSON para obter dados e exibi-los com ordenação e paginação. Eu realmente não implementei ainda, eu vou ler embora o código fonte esta noite para ver como fazê-lo--há muito pouca documentação sobre o plugin, vá figura. Vou acabar por publicar algo no meu blog assim que o Implementar.

Actualizar: o laiguExtGridPlugin foi implementado, mas está no topo de uma biblioteca Javascript chamada ext. Esta Biblioteca é enorme, mais de 27 meg. Isto é para a biblioteca inteira. A parte que eu uso é cerca de 100KB. Eu também uso jQuery, então ambas as bibliotecas Carregando (que, felizmente, é apenas para uma página) é completamente inaceitável. Vou mudar para um sistema de rede de base jQuery.

Também encontrei um 'plugin' jQuery commerically licenciado chamado jqGrid de Trirand. Está um pouco fora de ... o meu preço é de 599 dólares por uma licença de um lugar com assinatura, fonte e suporte prioritário ou 450 dólares por apenas uma licença. No entanto, ele parece muito bom e me lembra muito mais recente Msoft Office UI.

Por agora, o primeiro vai fazer muito bem; no entanto, vou procurar um quadro. Talvez eu mesmo faça um.
 1
Author: Logan Bibby, 2011-03-30 22:09:30
Se já não tiveres, eu daria a sugestão do Roman uma tentativa. O agiletoolkit está abaixo de 6MB para tudo e só carrega as partes que você precisa na página, mas o exemplo que ele forneceu no código acima é tudo o que você precisa para criar uma grade mostrando os dados da tabela.

A linha setSource determina qual a tabela que será obtida a partir do mysql, neste caso a tabela 'utilizador'

  $g->setSource('user');

E se precisar de impor algum limite nas linhas devolvidas em vez de deixar o utilizador filtrar eles, por exemplo, apenas listando caras, você pode adicionar

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

Eu acho que também existem algumas opções de exportação para MVCGrid no diretório atk4-addons para que você possa possivelmente adicionar Excel ou PDF exportação dos dados na grade, embora eu não tenha tido tempo de explorar essas opções eu mesmo ainda - acabou de notar exportação.php no directório addons.

 1
Author: Trevor North, 2011-09-17 02:14:08

Isso pode ser feito simplesmente emToolkit ágil , que também integraria jQuery e AJAX.

1.git clone git:/ / github.com/atk4/atk4. git

(em alternativa, pode descarregar um pacote)

2.configuracao.php:

<?php     
$config["atk"]["base_path"]="./atk4/";
$config["dsn"]='mysql://root:root@localhost/project';
$config['url_postfix']='.php';

3.indice.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();

As funcionalidades são: paginação, ordenação, filtragem e pode personalizar tudo. O Toolkit ágil tem extensa documentação e livro de aprendizagem.

Pode autenticar - se com o u: demo, p: demo

 1
Author: romaninsh, 2011-09-29 12:47:51

Gerador de código PHPRunner - PHP

Também há isto, mas não sei se queres que seja grátis.

Existe também Esta ferramenta de comunicação de plataforma cruzada (que não está em PHP).

 1
Author: CoolStraw, 2012-05-04 13:01:08
Há algumas ferramentas que acredito que te podem ajudar.

Http://mydbr.com / : pode ajudá-lo a converter as suas necessidades de SQL em relatórios profissionais

Http://mysqlreports.com : Interface de estilo do assistente que o pode ajudar a criar relatórios de PHP para o MySQL (você poderá então procurar e ordenar), suporta o loggin do Membro

 0
Author: Abdel Rahman Karim, 2016-04-01 20:51:56