【问题标题】:Any good PHP MySQL-compatible reporting frameworks out there? [closed]有什么好的 PHP MySQL 兼容报告框架吗? [关闭]
【发布时间】:2011-03-25 09:58:40
【问题描述】:

我正在寻找一个基于 Web 的报告框架,它是基于 PHP 并与 MySQL 一起工作的。

这是我的问题(除了懒得自己编程之外):我有一个大型(50k+ 行)表,用于存储多个客户端的日志数据。这些客户端需要能够进行排序和搜索并完成所有这些宏大的任务。

我真的很喜欢背后有相当大力量的东西,这就是为什么我担心自己建造一个。这不是一个足够大的需求,值得花费大量时间,但它是我的客户的必要功能。

理想情况下,我想要某种框架,我既可以传递数据,也可以使用模板引擎获取数据本身(这样它就可以完成所有的演示)。我可以获取呈现的演示文稿并将其放入我的网站。

这么好的东西可能不存在,但也许我会很幸运。

【问题讨论】:

    标签: php mysql reporting


    【解决方案1】:

    你可以试试KoolReport

    免责声明:我正在从事这个项目。

    它是一个 php 报告框架,正是您所寻找的。您可以通过网站下载框架,克隆project from 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"
        )
    ));
    ?>
    

    这里是the result

    基本上,您可以同时从多个数据源获取数据,将它们通过流程传输,然后将结果存储到数据存储中。然后数据存储中的数据将在视图中可用以进行可视化。 Google Charts 集成在框架内,因此您可以立即使用来创建漂亮的图表和图形。

    好的,这里有一些不错的链接:

    1. KoolReport Advanced Examples : 查看更多好例子
    2. Doc - Data Sources:支持 MySQL、Oracle、SQLServer、MongoDB、CSV、Microsoft Excel ..
    3. Doc - Data Processing:数据分析与转换
    4. Doc - Data Visualization:通过图表、表格等方式将您的数据可视化。
    5. Project on Github

    希望对您有所帮助。

    【讨论】:

    • 框架不清楚,文档不好,支持也不好
    • 嗨,Mohammed,我们已经回答了您在论坛中提出的所有问题。如果有什么不明白的,可以继续在那里问我们。同意产品或文档可能不如您预期的那么好,我们会每天改进,但我不同意我们的支持团队不擅长支持,尤其是对我们的客户。因此,如果您在使用我们的产品时有任何困难,请告诉我们而不是在这里发表评论,因为我们无法在这里为您提供帮助。请!
    • 亲爱的,当我说糟糕的支持时,因为我的问题超过 1 天没有得到回复,当我要求在 facebook 上回答我时,你开始注意到请求.. 你的包裹是非常昂贵,那么它必须有快速和优质的支持。
    【解决方案2】:

    我找到了一个很好的替代品,非常适合我的需求:一个名为 laiguExtGridPlugin 的 Symfony 插件。它不是一个框架,但它使用 JSON 调用来获取数据并通过排序和分页显示它。我还没有真正实现它,今晚我将阅读源代码,看看如何做到这一点——关于插件的文档很少,去看看吧。一旦我实现它,我最终会在我的博客上发布一些东西。

    更新: laiguExtGridPlugin 已实现,但它位于名为 ext 的 Javascript 库之上。这个库很大,超过 27 兆。这是完整的图书馆。我使用的部分大约是 100KB。我也使用 jQuery,所以这两个库的加载(谢天谢地,它只适用于一页)是非常不可接受的。我将切换到基于 jQuery 的网格系统。

    我还从 Trirand 找到了一个名为 jqGrid 的商业许可 jQuery 插件。带有订阅、源和优先支持的单机许可证 599 美元或仅许可证 450 美元,这有点超出我的价格范围。不过,它看起来确实不错,让我想起了新的 Msoft Office UI。

    现在前者就可以了;但是,我将四处寻找一个框架。我可以自己做一个。

    【讨论】:

      【解决方案3】:

      如果您还没有,我会尝试一下 Roman 的建议。敏捷工具包的所有内容都在 6MB 以下,并且只加载页面中您需要的部分,但他在上面的代码中提供的示例是您创建显示表格数据的网格所需的全部内容。

      setSource 行确定将从 mysql 中获取哪个表,在本例中为“用户”表

        $g->setSource('user');
      

      如果您需要对返回的行实施一些限制,而不是让用户过滤它们,例如只是列出家伙,你可以添加

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

      我认为 atk4-addons 目录中还有一些 MVCGrid 的导出选项,因此您可以添加 Excel 或 PDF 导出网格中的数据,尽管我自己还没有时间探索这些选项 - 只是注意到导出。在 addons 目录下的 php 文件。

      【讨论】:

        【解决方案4】:

        这可以简单地在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();
        

        功能包括:分页、排序、过滤,您可以自定义所有内容。敏捷工具包有大量的文档和学习书籍。

        你可以用u:demo,p:demo登录

        【讨论】:

        • 感谢您的回答!但是,我已经更新了我发布的答案,包括我不会使用除 jQuery 之外的任何其他 Javascript 库这一事实。虽然,Agile Toolkit 看起来很不错,我会考虑在未来的其他项目中使用它!再次感谢!
        • Agile Toolkit 基于 jQuery ;)
        • 原来如此!我的道歉!我一定没有太注意。 :(
        【解决方案5】:

        PHPRunner - PHP code generator

        还有this,不过不知道你要不要免费。

        还有this cross platform reporting tool(PHP 中没有)。

        【讨论】:

        • 谢谢你们!!我对非免费产品的唯一问题是它们通常不是开源的——或者你必须支付大量费用才能获得源代码以阻止不分享。再次感谢!
        • 很难找到免费的 php 报告工具。这就是我在搜索时发现的所有内容(我没有更深入地搜索,但仍然如此)。如果我学到新的东西,我会回复你。
        • 谢谢! :) 而且我不一定需要免费的。但如果你明白我的意思,我确实想要开源,而不必为此支付额外的 300 美元。如果我不能破解某事,我往往会不开心。 ;)
        【解决方案6】:

        我相信有很多工具可以帮助你:

        https://mysqlreportsengine.com
        PHP 中的报告框架,具有易于遵循的 API,您可以从代码中调用该 API 来为 MYSQL 生成报告。

        https://mydbr.com:可以帮助您将 SQL 查询转换为专业报告

        https://mysqlreports.com:向导式界面,可以帮助您为 MySQL 创建 PHP 报告(您可以搜索和排序)它确实支持会员登录

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-16
          • 1970-01-01
          • 2010-09-18
          相关资源
          最近更新 更多