Я использую PHPJasperXML для создания и отображения отчетов

Сначала я создаю отчет с помощью jaspersoft Studio.

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

Когда я просматриваю отчет в jasper studio, все работает так, как ожидалось, но проблема в том, что когда я пытаюсь отобразить форму отчета php, отчет создается только с данными из основного отчета, данные для таблицы не создаются.

Когда я просматриваю отчет от студии jaspersoft, я получаю ожидаемый результат введите описание изображения здесь

Но когда я пытаюсь запустить тот же отчет из PHP:

enter image description here

Он показывает мне список без данных таблицы.

Код, использованный для оформления отчетов в jaspersoft studio

    <?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.6.0.final using JasperReports Library version 6.6.0  -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="eleve_admis" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="466e7fc7-2c42-45cc-9626-1e50658cbee4">
    <property name="com.jaspersoft.studio.data.sql.tables" value=""/>
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="Sample DB"/>
    <style name="Table_TH" mode="Opaque" backcolor="#FFFFFF">
        <box>
            <pen lineWidth="0.5" lineColor="#828282"/>
            <topPen lineWidth="0.5" lineColor="#828282"/>
            <leftPen lineWidth="0.5" lineColor="#828282"/>
            <bottomPen lineWidth="0.5" lineColor="#828282"/>
            <rightPen lineWidth="0.5" lineColor="#828282"/>
        </box>
    </style>
    <style name="Table_CH" mode="Opaque" backcolor="#FFFFFF">
        <box>
            <pen lineWidth="0.5" lineColor="#828282"/>
            <topPen lineWidth="0.5" lineColor="#828282"/>
            <leftPen lineWidth="0.5" lineColor="#828282"/>
            <bottomPen lineWidth="0.5" lineColor="#828282"/>
            <rightPen lineWidth="0.5" lineColor="#828282"/>
        </box>
    </style>
    <style name="Table_TD" mode="Opaque" backcolor="#FFFFFF">
        <box>
            <pen lineWidth="0.5" lineColor="#828282"/>
            <topPen lineWidth="0.5" lineColor="#828282"/>
            <leftPen lineWidth="0.5" lineColor="#828282"/>
            <bottomPen lineWidth="0.5" lineColor="#828282"/>
            <rightPen lineWidth="0.5" lineColor="#828282"/>
        </box>
    </style>
    <subDataset name="eleve_admis_dataset" uuid="3df422c8-c3c8-4109-ba68-e0d8d87701b2">
        <property name="com.jaspersoft.studio.data.sql.tables" value=""/>
        <property name="com.jaspersoft.studio.data.defaultdataadapter" value="Sample DB"/>
        <parameter name="class_id_table" class="java.lang.String"/>
        <queryString language="SQL">
            <![CDATA[SELECT CONCAT(' ',student_lastname, ' ', ' ' , student_middlename, ' ', student_firstname) as Fullname, DATE_FORMAT(student_date_of_birth, "%d/%c/%Y") as dob, student_sex, 
IF(student_sex = "Femme", "F", "M") as sex
FROM student as S, student_class as C
 WHERE S.stu_class = C.class_id AND C.class_id = "$P{class_id_table}"]]>
        </queryString>
        <field name="Fullname" class="java.lang.String">
            <property name="com.jaspersoft.studio.field.label" value="Fullname"/>
        </field>
        <field name="dob" class="java.lang.String">
            <property name="com.jaspersoft.studio.field.label" value="dob"/>
        </field>
        <field name="student_sex" class="java.lang.String">
            <property name="com.jaspersoft.studio.field.label" value="student_sex"/>
            <property name="com.jaspersoft.studio.field.tree.path" value="student"/>
        </field>
        <field name="sex" class="java.lang.String">
            <property name="com.jaspersoft.studio.field.label" value="sex"/>
        </field>
    </subDataset>
    <parameter name="class_id" class="java.lang.String"/>
    <queryString language="SQL">
        <![CDATA[select CONCAT("Lisf For", '  ', class_no, '  ',class_description ) as classe, CONCAT("DATE:  ", DATE_FORMAT(CURDATE(), "%d/%c/%Y")) as date
FROM student_class
WHERE class_id = "$P{class_id}"]]>
    </queryString>
    <field name="classe" class="java.lang.String">
        <property name="com.jaspersoft.studio.field.label" value="classe"/>
    </field>
    <field name="date" class="java.lang.String">
        <property name="com.jaspersoft.studio.field.label" value="date"/>
    </field>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band height="98" splitType="Stretch">
            <textField>
                <reportElement x="14" y="50" width="535" height="40" uuid="4e2a3adb-6a43-4b28-8669-17c9f81a6486"/>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font size="15" isBold="true"/>
                </textElement>
                <textFieldExpression><![CDATA[$F{classe}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="360" y="0" width="190" height="30" uuid="ba6e5b18-4b85-4e4d-be68-338316e2b427"/>
                <textElement textAlignment="Right" verticalAlignment="Middle">
                    <font size="12" isBold="true"/>
                </textElement>
                <textFieldExpression><![CDATA[$F{date}]]></textFieldExpression>
            </textField>
        </band>
    </title>
    <detail>
        <band height="213" splitType="Stretch">
            <componentElement>
                <reportElement x="90" y="10" width="383" height="80" uuid="a4ea31f7-b6a9-4be7-b304-72afa82cba5f">
                    <property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.VerticalRowLayout"/>
                    <property name="com.jaspersoft.studio.table.style.table_header" value="Table_TH"/>
                    <property name="com.jaspersoft.studio.table.style.column_header" value="Table_CH"/>
                    <property name="com.jaspersoft.studio.table.style.detail" value="Table_TD"/>
                    <property name="net.sf.jasperreports.export.headertoolbar.table.name" value=""/>
                </reportElement>
                <jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd">
                    <datasetRun subDataset="eleve_admis_dataset" uuid="07815e66-5865-4839-ad1d-27cade45b0eb">
                        <datasetParameter name="class_id_table">
                            <datasetParameterExpression><![CDATA[$P{class_id}]]></datasetParameterExpression>
                        </datasetParameter>
                        <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
                    </datasetRun>
                    <jr:column width="200" uuid="77d235be-53cc-4ba2-9f46-6f40cc3c38dd">
                        <property name="com.jaspersoft.studio.components.table.model.column.name" value="Column1"/>
                        <jr:columnHeader style="Table_CH" height="30" rowSpan="1">
                            <staticText>
                                <reportElement x="0" y="0" width="200" height="30" uuid="a7dbdc1d-52be-49f4-a402-bb0afcb02aa2"/>
                                <textElement textAlignment="Left" verticalAlignment="Middle">
                                    <font fontName="trebuchet&#xD;&#xA;" size="12" isBold="true"/>
                                </textElement>
                                <text><![CDATA[  Nom ]]></text>
                            </staticText>
                        </jr:columnHeader>
                        <jr:detailCell style="Table_TD" height="50">
                            <textField>
                                <reportElement x="0" y="0" width="200" height="50" uuid="30821ecb-5df5-43a3-8ca7-13563d10487a"/>
                                <textElement textAlignment="Left" verticalAlignment="Middle">
                                    <font fontName="trebuchet&#xD;&#xA;" size="14"/>
                                </textElement>
                                <textFieldExpression><![CDATA[$F{Fullname}]]></textFieldExpression>
                            </textField>
                        </jr:detailCell>
                    </jr:column>
                    <jr:column width="90" uuid="5caeec2a-89eb-4a8f-9ac0-6f87897919fd">
                        <property name="com.jaspersoft.studio.components.table.model.column.name" value="Column2"/>
                        <jr:columnHeader style="Table_CH" height="30" rowSpan="1">
                            <staticText>
                                <reportElement x="0" y="0" width="90" height="30" uuid="789641df-5783-471b-a757-128097c085ab"/>
                                <textElement textAlignment="Center" verticalAlignment="Middle">
                                    <font fontName="trebuchet&#xD;&#xA;" size="12" isBold="true"/>
                                </textElement>
                                <text><![CDATA[ Age]]></text>
                            </staticText>
                        </jr:columnHeader>
                        <jr:detailCell style="Table_TD" height="50">
                            <textField>
                                <reportElement x="0" y="0" width="90" height="50" uuid="2d2780b8-8120-4b16-872a-60134a5144f5"/>
                                <textElement textAlignment="Center" verticalAlignment="Middle">
                                    <font fontName="trebuchet&#xD;&#xA;" size="14"/>
                                </textElement>
                                <textFieldExpression><![CDATA[$F{dob}]]></textFieldExpression>
                            </textField>
                        </jr:detailCell>
                    </jr:column>
                    <jr:column width="93" uuid="3f04649c-337e-4da6-a915-f010d97d093f">
                        <property name="com.jaspersoft.studio.components.table.model.column.name" value="Column3"/>
                        <jr:columnHeader style="Table_CH" height="30" rowSpan="1">
                            <staticText>
                                <reportElement x="0" y="0" width="93" height="30" uuid="78655fb0-fe8a-4f0b-866e-239b0392f7b3"/>
                                <textElement textAlignment="Center" verticalAlignment="Middle">
                                    <font fontName="trebuchet&#xD;&#xA;" size="12" isBold="true"/>
                                </textElement>
                                <text><![CDATA[  Sexe]]></text>
                            </staticText>
                        </jr:columnHeader>
                        <jr:detailCell style="Table_TD" height="50">
                            <textField>
                                <reportElement x="0" y="0" width="93" height="50" uuid="8550aef2-10d9-408c-9b17-6684eb7bf77d"/>
                                <textElement textAlignment="Center" verticalAlignment="Middle">
                                    <font fontName="trebuchet&#xD;&#xA;" size="14"/>
                                </textElement>
                                <textFieldExpression><![CDATA[$F{sex}]]></textFieldExpression>
                            </textField>
                        </jr:detailCell>
                    </jr:column>
                </jr:table>
            </componentElement>
        </band>
    </detail>
</jasperReport>

Код PHP для отображения отчета:

<?php 

     require_once("../private/initialize.php");
     include_once('phpjasperxml_0.9d/class/tcpdf/tcpdf.php');
     include_once("phpjasperxml_0.9d/class/PHPJasperXML.inc.php"); // PHPJasperXML

     error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

     $class_id = (int)$_GET['class'];

     $params = array();
     $params['class_id'] = $class_id; 
     $params['class_id_table'] = $class_id;

     $PHPJasperXML = new PHPJasperXML();
     //$PHPJasperXML->debugsql=true;
     $PHPJasperXML->arrayParameter =  $params;
     $PHPJasperXML->load_xml_file("reports/eleve_admis.jrxml"); // Name of the reports file
     $PHPJasperXML->transferDBtoArray($servername,$username, $password, $database);
     $PHPJasperXML->outpage("I"); 

?>

Буду признателен за любую помощь в этом вопросе. Или любые предложения для других библиотек с открытым исходным кодом для создания отчетов с использованием PHP

0
Matrix11 22 Сен 2018 в 12:15

1 ответ

Лучший ответ

Если вы используете php 7, это не сработает. mysql_connect Это расширение устарело в PHP 5.5.0 и было удалено в PHP 7.0.0. для получения дополнительной информации посетите http://php.net/manual/en/function .mysql-query.php

1
Kiran Ugale 22 Сен 2018 в 09:30