IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Jasper Discussion :

Problème passage de variable php à Ireport


Sujet :

Jasper

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 75
    Points : 54
    Points
    54
    Par défaut Problème passage de variable php à Ireport
    Salutation tout le monde!!!!!

    Je viens de commencer à me mettre à Jasper et plus particulièrement à Ireport. En faites je souhaite générer des rapports jasper dans une application développé en php. J'utilise symfony. Actuellement j'arrive à faire appel à mon rapport dans mon application mais le soucis que je rencontre c'est que la variable que je veux envoyer au rapport ne fonctionne pas. En faites j'ai l'impression que mon rapport n'arrive pas à récupérer ma variable.

    Voici le code de mon action ou je fait appel au rapport jasper et ou je lui envoi ma variable:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    public function result_recherche_googleAction(){
     
            $em = $this->getDoctrine()->getManager ();
     
            $request = $this->getRequest();
            $id_pef = $request->request->get('id_pef');
     
            if ($request->isXmlHttpRequest()) {
     
     
               $jasperclient=new JasperClient();
               $lien=$jasperclient->getUrlManyParams($this->container,"RechercheGoogle",array("id_pef" => $id_pef));    
     
     
                return $this->get('templating')->renderResponse('gideBundle:Edition:res_edition_recherche_google.html.twig',array(
                //'trans'=>$pefs,
                'lien'=>$lien,
                ));
            //}
             }
            else {
                //return $this->feuillePEFAction();
                return new Response(json_encode($id_pef));
            }
        }
    Voici le xml de mon rapport:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    <?xml version="1.0" encoding="UTF-8"?>
    <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="RechercheGoogle" language="groovy" pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="7e1de1d9-a08e-47ec-8af2-e93dbec288e7">
    	<property name="ireport.zoom" value="1.0"/>
    	<property name="ireport.x" value="0"/>
    	<property name="ireport.y" value="0"/>
    	<parameter name="id_pef" class="java.lang.Integer"/>
    	<background>
    		<band splitType="Stretch"/>
    	</background>
    	<title>
    		<band height="270" splitType="Stretch">
    			<staticText>
    				<reportElement x="82" y="34" width="100" height="20" uuid="8969389a-851b-44e5-a88c-14a4b217fc47"/>
    				<text><![CDATA[Coucou !!!]]></text>
    			</staticText>
    			<staticText>
    				<reportElement x="252" y="21" width="240" height="58" uuid="1bebe360-cabf-485f-a158-befade8ee7a9"/>
    				<textElement>
    					<font size="14"/>
    				</textElement>
    				<text><![CDATA[ID du PEF:  $P{id_pef}]]></text>
    			</staticText>
    			<textField>
    				<reportElement x="322" y="125" width="100" height="20" uuid="eae36fce-573e-484c-8cca-e8b4007d5e2b"/>
    				<textFieldExpression><![CDATA[$P{id_pef}]]></textFieldExpression>
    			</textField>
    			<textField>
    				<reportElement x="224" y="109" width="100" height="20" uuid="2e2db24f-899b-45d0-9434-62cdd0f35171"/>
    				<textFieldExpression><![CDATA[$P{id_pef}]]></textFieldExpression>
    			</textField>
    		</band>
    	</title>
    	<pageHeader>
    		<band height="35" splitType="Stretch"/>
    	</pageHeader>
    	<columnHeader>
    		<band height="61" splitType="Stretch"/>
    	</columnHeader>
    	<detail>
    		<band height="125" splitType="Stretch"/>
    	</detail>
    	<columnFooter>
    		<band height="45" splitType="Stretch"/>
    	</columnFooter>
    	<pageFooter>
    		<band height="54" splitType="Stretch"/>
    	</pageFooter>
    	<summary>
    		<band height="42" splitType="Stretch">
    			<textField>
    				<reportElement x="432" y="22" width="100" height="20" uuid="0d41b36b-f441-400c-af62-753fa3cb4b63"/>
    				<textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
    			</textField>
    		</band>
    	</summary>
    </jasperReport>
    Voilà j'espère que quelqu'un pourra m'aider car je suis nouveau dans jasper j'ai vraiment besoin d'aide. Merci d'avance!! Si vous avez besoin de plus ample explication dîtes le moi .

  2. #2
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 75
    Points : 54
    Points
    54
    Par défaut
    Re Bonjour tout le monde!!

    Désolé pour le double post mais quelqu'un aurait il trouvé une solution ?? Car je n'ai toujours pas trouvé .

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations forums :
    Inscription : Mars 2007
    Messages : 616
    Points : 556
    Points
    556
    Par défaut
    Désolé, je n'ai jamais utilisé Jasper avec php. Je sais uniquemnt comment passer les paramètres en Java.

    En php, que fait la classe JasperClient() ?

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 75
    Points : 54
    Points
    54
    Par défaut
    Bonjour cmako!!

    Merci pour ta réponse! En effet je n'ai pas réussi à trouver des truc intéréssant sur le php et ireport. La plupart passent pas java. Mais dans mon cas je ne dois que passer par PHP...

    Voici le code de la classe JasperClient() si cela peut t'aider:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    <?php
     
    namespace ratp\gideBundle\Entity;
     
    use Doctrine\ORM\Mapping as ORM;
     
    /**
     * JasperClient
     *
     * @ORM\Table()
     * @ORM\Entity
     */
    class JasperClient
    {
        /**
         * @var integer
         *
         * @ORM\Column(name="id", type="integer")
         * @ORM\Id
         */
        public $id;
     
        /**
         * @var string
         *
         * @ORM\Column(name="rapportname", type="string", length=255)
         */
        public $rapportname;
     
         /**
         * @var string
         *
         * @ORM\Column(name="rapportvariable", type="string", length=255)
         */
        public $rapportvariable;
     
        /**
         * @var string
         *
         * @ORM\Column(name="parametre", type="string", length=255)
         */
        public $parametre;
     
     
        /**
         * Set hostname
         *
         * @param string $hostname
         * @return JasperClient
         */
        public function setHostname($hostname)
        {
            $this->hostname = $hostname;
     
            return $this;
        }
     
        /**
         * Get hostname
         *
         * @return string 
         */
        public function getHostname($container)
        {
            return $container->getParameter('protocol') . '://' . $container->getParameter('hostname') 
                    . ':' . $container->getParameter('tcpport') . '/' . $container->getParameter('rootfolder') . '/flow.html?' . $container->getParameter('specialparams') 
                    . '&ParentFolderUri=' . $container->getParameter('parentfolder')
                    . '&j_username=' . $container->getParameter('username')
                    . '&j_password=' . $container->getParameter('userpass')
                    . '&reportUnit=%2f' . $container->getParameter('parentfolder') . '%2f'
                    ;
        }
     
     
        /**
         * Set rapportname
         *
         * @param string $rapportname
         * @return JasperClient
         */
        public function setRapportname($rapportname)
        {
            $this->rapportname = $rapportname;
     
            return $this;
        }
     
        /**
         * Get rapportname
         *
         * @return string 
         */
        public function getRapportname()
        {
            return $this->rapportname;
        }
     
        /**
         * Set parametre
         *
         * @param string $parametre
         * @return JasperClient
         */
        public function setParametre($parametre)
        {
            $this->parametre = $parametre;
     
            return $this;
        }
     
        /**
         * Get parametre
         *
         * @return string 
         */
        public function getParametre()
        {
            return $this->parametre;
        }
     
        public function getUrl($container,$rapportname,$parametre="" ,$rapportvariable="SelectNomPef") {
            return $this->getUrlManyParams($container,$rapportname,array($rapportvariable => $parametre));
        }
     
     
     
     
         public function getUrlManyParams($container,$rapportname,$params){
     
            $this->rapportname=$rapportname;
    //        $this->parametre=$parametre;
    //        $this->rapportvariable=$rapportvariable;
            $listpar='';
            // unlfod params
            if (!is_array($params)) die('internal error 10');
            foreach ($params as $k=>$v)
                   $listpar.='&'.$k.'=' . urlencode($v);
            if (strlen($listpar)>1) $listpar=substr($listpar,1);
            $lien=$this->getHostname($container) .$this->rapportname."&".$listpar;
            return $lien;               
        }
     
     
     
        /**
         * Set id
         *
         * @param integer $id
         * @return JasperClient
         */
        public function setId($id)
        {
            $this->id = $id;
     
            return $this;
        }
     
        /**
         * Get id
         *
         * @return integer 
         */
        public function getId()
        {
            return $this->id;
        }
     
        /**
         * Set rapportvariable
         *
         * @param string $rapportvariable
         * @return JasperClient
         */
        public function setRapportvariable($rapportvariable)
        {
            $this->rapportvariable = $rapportvariable;
     
            return $this;
        }
     
        /**
         * Get rapportvariable
         *
         * @return string 
         */
        public function getRapportvariable()
        {
            return $this->rapportvariable;
        }
    }
    A mon avis je pense que j'arrive à envoyer le paramètre côté php mais par contre côté Ireport je n'arrive pas... En tout cas merci pour ton aide. Si tu as besoin de plus ample information je reste à ta disposition .

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations forums :
    Inscription : Mars 2007
    Messages : 616
    Points : 556
    Points
    556
    Par défaut
    D'après ce que je vois, il n'y a rien qui appelle le moteur Jasper. Je ne sais même pas à quelle moment tu génère le document. Est ce que tu génère en essayant de te connecter à la une Url qui va contenir tes paramètres, mais je ne sais pas quelle moteur tourne derrière cette URL.
    En gros, je veux savoir si tu appelle :
    http://mon-url/mon-rapport?param1=val1&param2-val2
    j'aimerai bien savoir qui va traiter ce /mon-rapport et comment il va s'interconnecter avec JasperReports.

    Le code que tu as mis en exemple ne le fait pas à priori

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 75
    Points : 54
    Points
    54
    Par défaut
    Je génère bien mon document car dans mon application j'appelle bien le rapport Japer et il s'affiche correctement sauf bien sur le paramètre.

    Dans Symfony j'ai ajouté dans le parameter.yml ce qui me permet de me connecter à jasper comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    jasper:
        hostname: localhost
        tcpport: '8080'
        parentfolder: reports/nightly
        username: username
        userpass: mdp
        specialparams: '_flowId=viewReportFlow&standAlone=true&_datasource=nightlydatasource'
    Tien j'ai l'url que tu me demandais. Je l'ai eu en faisant un var_dump de ma variable lien de l'action de mon controller comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $jasperclient=new JasperClient();
               $lien=$jasperclient->getUrlManyParams($this->container,"RechercheGoogle",array("id_pef" => $id_pef));   
               var_dump($lien); exit;
    voici l'url:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string 'http://localhost:8080/jasperserver/flow.html?_flowId=viewReportFlow&standAlone=true&_datasource=nightlydatasource&ParentFolderUri=reports/nightly&j_username=username&j_password=mdp&reportUnit=%2freports/nightly%2fRechercheGoogle&id_pef=104039-01-01' (length=269)
    Et j'oubliais voici la vue ou j'affiche le rapport:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    <div>
        <div class="rech_form" style="width: 664px; height:100px; " >
            <input id="input_rech" 
                    style="text-transform:uppercase; width: 512px; float: left;  height: 32px; border-radius: 0; border: none;  
                            background: url({{ asset('bundles/gide/images/input_rech.jpg') }}) ;
                            color: #92a4b0; font-family: 'Myriad Pro', Helvetica, Arial, sans-serif; font-size: 14px;" 
                            placeholder="Entrer un PEF, TJ, Lieu..." />
     
            <input type="button" value="{{ 'Recherche' }}"   id="bt_recherche_google"  onclick='recherche_google("{{ugpef}}")' />
           <!-- <button id="bt_rech">Recherche</button>-->
            <br />
            <div id="bloc_gauche" style="float:left;width:33%;"> 
                <input type="checkbox" id="choix_armoire" class="k-checkbox" />
                <label for="choix_armoire" class="k-checkbox-label"> Nom Armoire </label>
                <br /><br />
                <input type="checkbox" id="choix_code_mire" class="k-checkbox" /> 
                <label for="choix_code_mire" class="k-checkbox-label"> Code Mire </label>
            </div>
            <div id="bloc_milieu" style="float:left;width:33%;margin-left:auto;">
                <input type="checkbox" id="choix_code_GMAO" class="k-checkbox" />
                <label for="choix_code_gmao" class="k-checkbox-label"> Code GMAO </label>
                <br /><br />       
                <input type="checkbox" id="choix_repere_depart" class="k-checkbox" /> 
                <label for="choix_repere_depart" class="k-checkbox-label"> Repère de Départ </label>
            </div>
            <div id="bloc droit" style="float:left;width:33%;margin-left:auto;">          
                <input type="checkbox" id="choix_libelle_appareil" class="k-checkbox" /> 
                <label for="choix_libelle_appareil" class="k-checkbox-label"> Libellé d'Appareil </label>
                <br /><br />    
                <input type="checkbox" id="choix_observation" class="k-checkbox" />
                <label for="choix_observation" class="k-checkbox-label"> Observation </label>
            </div>
     
        </div> 
             <!--<button class="buttonPro orange" id="bouton_close" onclick="closewindow();" type="button">Annuler</button>-->
        <div id="rapport_recherche_google"> </div>
     </div>        
    <script>
      /*  var pef="{{ugpef}}";
     
     
    $( document ).ready(function() {
     
     
        $('#bt_recherche_google').click(function() {
                  alert(pef);
              });
    });*/
    function recherche_google(id_pef){
        alert(id_pef);
     
        $.ajax({
            type: 'POST',
            url : "{{ path('result_recherche_google')}}", 
            dataType : 'text', 
            data : {
                id_pef: id_pef // on donne la chaîne de caractère tapée dans le champ de recherche
                        },
            success : function(data){ // on se prépare à renvoyer les données réceptionnées grâce à l'évènement de succès
                console.log(data);
                $('#rapport_recherche_google').html(data);
            },
            error : function(erreur){
                alert("Une erreur est survenue "+ erreur);
                console.log(erreur);
            }
        });
        }
    </script>
    Comme tu as pu le voir je fais un appel ajax qui envoi ce que j'ai tapé dans mon input dans mon action (code donné lors de mon 1er message) et cet appel va incorporer ceci dans une div (c'est dedans que j'affiche vraiment le rapport jasper):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <div style="width:100%;height: 780px;position:relative">
    <div id="hider" style="background: url('/web/bundles/gide/images/banner_bkgd.png') repeat-x scroll 0 0 #2881BB;;display:block;position:absolute;top:2px;left:0;height: 26px; width: 100%;z-index: 10;"></div>
    <iframe name="zone" id="zone"  src="{{lien}}" style=" height: 700px;width: 100%;position:absolute;left:0;top:0;"></iframe >
    </div>
    Voila j'espère avoir donné les bonnes informations sinon dit le moi .

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations forums :
    Inscription : Mars 2007
    Messages : 616
    Points : 556
    Points
    556
    Par défaut
    Qui interprète cet url-là

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://localhost:8080/jasperserver/flow.html?_flowId=viewReportFlow&standAlone=true&_datasource=nightlydatasource&ParentFolderUri=reports/nightly&j_username=username&j_password=mdp&reportUnit=%2freports/nightly%2fRechercheGoogle&id_pef=104039-01-01
    Est ce que c'est Jasperserver? Ou est ce que c'est un server Apache avec un autre mais qui est l’interpréteur?

  8. #8
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 75
    Points : 54
    Points
    54
    Par défaut
    Je pense que c'est le serveur jasper. Car l'application est utilisé juste sous wamp serveur après la gestion des rapport c'est le jasperserver qui s'en charge.

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 75
    Points : 54
    Points
    54
    Par défaut
    Désolé pour le double post mais je tenais à dire que mon problème est résolu!! En faites tout ce que je fais jusque maintenant dans mon code PHP et mon rapport dans Ireport était bon. Et il manquait juste se que je pensais c'est à dire qu'il faut "mapper" un input controls de même nom que votre paramètre si vous voulez que jasperserver fasse le lien entre votre variable PHP que vous envoyer et votre paramètre de Ireport.

    Je m'explique:

    Nom : jasperserver.png
Affichages : 226
Taille : 10,0 Ko

    Dans l'onglet de navigation de jasperserver au sein de ireport (voir image ci-dessus) il faut accéder à votre rapport comme ceci:

    Nom : suite.png
Affichages : 219
Taille : 21,3 Ko

    Dans le dossier de mon rapport on voit deux autres dessiers en plus de mon rapport. J'ai pris le dossier "Input control" (de base il est vide) et en faisant un clic droit j'ai ensuite cliqué sur "create a local input control" et je lui ai donné le même nom que le paramètre que j'avais dans Ireport. Et depuis tout fonctionne!! Ma variable PHP que j'envois et bien récupéré dans Ireport!! En esperant que cela puisse aider quelqu'un s'il rencontre un jour le même problème .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 22/08/2007, 14h39
  2. Problème Passage de variable
    Par Nick_Rivers dans le forum Langage
    Réponses: 2
    Dernier message: 19/01/2007, 16h21
  3. [PHP-JS] Passage de variable php/Js
    Par dark_vidor dans le forum Langage
    Réponses: 14
    Dernier message: 09/12/2005, 22h31
  4. Réponses: 5
    Dernier message: 31/08/2005, 10h05
  5. [PHP-JS] passage de variable php a javascript
    Par limpins dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 05/07/2005, 11h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo