You are not logged in.

Announcement

 Téléchargez la dernière version stable de GLPI      -     Et vous, que pouvez vous faire pour le projet GLPI ? :  Contribuer
 Download last stable version of GLPI                      -     What can you do for GLPI ? :  Contribute

#1 2021-09-02 09:04:34

ec2311
Member
Registered: 2016-04-07
Posts: 309

[RESOLU][PDF] 2.0.0 : Bogue sur Contrat

Bonjour

Dans le script contract_item.class.php

Je me pose la question sur le fonctionnement de la requete Query
Initialement ainsi (format tableau?)
$query = ['SELECT'    =>  'glpi_contracts_items.*',
               'FROM'      => ['glpi_contracts_items', 'glpi_contracts'],
               'LEFT JOIN' => ['glpi_entities'
                               => ['FKEY' => ['glpi_contracts' => 'entities_id',
                                              'glpi_entities'  => 'id']]],
               'WHERE'    => ['glpi_contracts.id'              => '`glpi_contracts_items`.`contracts_id`',
                              'glpi_contracts_items.items_id'  => $ID ,
                              'glpi_contracts_items.itemtype'  => $type]
                              + $dbu->getEntitiesRestrictCriteria('glpi_contracts','','',true),
               'ORDER'    => 'glpi_contracts.name'];
      $result = $DB->request($query);

-> cette requete ne donne rien, alors que j'ai des contrats sur des elements...

Je l'ai remplacé par ceci
        $query = "SELECT *
               FROM      `glpi_contracts_items`, `glpi_contracts`
               LEFT JOIN `glpi_entities`
               on `glpi_contracts`.`entities_id` = `glpi_entities`.`id`
               WHERE    `glpi_contracts`.`id` = `glpi_contracts_items`.`contracts_id`
                        and `glpi_contracts_items`.`items_id`  = $ID
                        and `glpi_contracts_items`.`itemtype`  = '$type'".
                              //$dbu->getEntitiesRestrictCriteria(`glpi_contracts`,'','',true).
               " ORDER    by `glpi_contracts`.`name`";

cela fonctionne... hormis la notion de restriction ($dbu) resultat tableau... ?

Pouvez vous vérifier ?
Merci

Last edited by ec2311 (2021-11-02 12:55:46)


GLPI 10.0.10
GLPIinventory 1.3.4

Agents : FI (2.6, 2.5) et Glpiagents (1.7)

Offline

#2 2021-10-25 12:24:43

yllen
GLPI-DEV
From: Sillery (51)
Registered: 2008-01-14
Posts: 15,278

Re: [RESOLU][PDF] 2.0.0 : Bogue sur Contrat

Vos éléments sont-il dans la même entité que vos contrats ? avez-vous le droit de voir les contrats ?

Dans la requête il y a la restriction sur la visibilité des contrats (celle que vous avez supprimée dans votre requête)


CentOS 6.5 - CentOS 7.x
PHP 5.6 - PHP 7.x - MySQL 5.6  - MariaDB 10.2 + APC + oOPcache
GLPI from 0.72 to dev version
Certifiée ITIL (ITV2F, ITILF, ITILOSA)

Offline

#3 2021-10-25 13:05:03

ec2311
Member
Registered: 2016-04-07
Posts: 309

Re: [RESOLU][PDF] 2.0.0 : Bogue sur Contrat

Bonjour

Je n'ai qu'une seule entité.

en réactivant la premiere commande et en mettant un echo($query)
     $query = ['SELECT'    =>  'glpi_contracts_items.*',
               'FROM'      => ['glpi_contracts_items', 'glpi_contracts'],
               'LEFT JOIN' => ['glpi_entities'
                               => ['FKEY' => ['glpi_contracts' => 'entities_id',
                                              'glpi_entities'  => 'id']]],
               'WHERE'    => ['glpi_contracts.id'              => '`glpi_contracts_items`.`contracts_id`',
                              'glpi_contracts_items.items_id'  => $ID ,
                              'glpi_contracts_items.itemtype'  => $type]
                              + $dbu->getEntitiesRestrictCriteria('glpi_contracts','','',true),
               'ORDER'    => 'glpi_contracts.name'];

    /*$query = "SELECT *
               FROM      `glpi_contracts_items`, `glpi_contracts`
               LEFT JOIN `glpi_entities`
               on `glpi_contracts`.`entities_id` = `glpi_entities`.`id`
               WHERE    `glpi_contracts`.`id` = `glpi_contracts_items`.`contracts_id`
                        and `glpi_contracts_items`.`items_id`  = $ID
                        and `glpi_contracts_items`.`itemtype`  = '$type'".
                              //$dbu->getEntitiesRestrictCriteria(`glpi_contracts`,'','',true).
               " ORDER    by `glpi_contracts`.`name`"; */

        echo $query;
      $result = $DB->request($query);
j'obtiens l'erreur :
ArrayTCPDF ERROR: Some data has already been output, can't send PDF file

Si je reprends la requete ecrite (sans les []), donc celle que j'ai ecrite ) le resultat est correct.

Si je retire le commentaire que sur la ligne restriction entité et que je laisse le echo $query :
SELECT * FROM `glpi_contracts_items`, `glpi_contracts` LEFT JOIN `glpi_entities` on `glpi_contracts`.`entities_id` = `glpi_entities`.`id` WHERE `glpi_contracts`.`id` = `glpi_contracts_items`.`contracts_id` and `glpi_contracts_items`.`items_id` = 603 and `glpi_contracts_items`.`itemtype` = 'Computer'Array ORDER by `glpi_contracts`.`name`TCPDF ERROR: Some data has already been output, can't send PDF file

avec une notion de Array, correspondant à la ligne $dbu->getentities... + l'erreur TCPDF ERROR...

> ne connaissant pas le php, je ne sais pas si la presence des crochets est necessaire dans l'élaboration de la requete.

Last edited by ec2311 (2021-10-25 13:28:08)


GLPI 10.0.10
GLPIinventory 1.3.4

Agents : FI (2.6, 2.5) et Glpiagents (1.7)

Offline

#4 2021-10-25 18:00:42

yllen
GLPI-DEV
From: Sillery (51)
Registered: 2008-01-14
Posts: 15,278

Re: [RESOLU][PDF] 2.0.0 : Bogue sur Contrat

Problème reproduit et correction envoyée en MP.
Dès que j'auraéi de nouveau accès à la forge des plugins, je pourrai commiter cette correction.

Merci de votre retour


CentOS 6.5 - CentOS 7.x
PHP 5.6 - PHP 7.x - MySQL 5.6  - MariaDB 10.2 + APC + oOPcache
GLPI from 0.72 to dev version
Certifiée ITIL (ITV2F, ITILF, ITILOSA)

Offline

#5 2021-10-26 09:28:09

ec2311
Member
Registered: 2016-04-07
Posts: 309

Re: [RESOLU][PDF] 2.0.0 : Bogue sur Contrat

Bonjour

Correction ko sad

j'ai regardé de pres $query proposé vis à vis de ce que j'ai fait comme requete.

du coup voici ce que je mettrais :
$query = ['SELECT'    => ['*'],
               'FROM'      => ['glpi_contracts_items','glpi_contracts'],
               'LEFT JOIN' => ['glpi_entities'
                               => ['FKEY' => ['glpi_contracts' => 'entities_id',
                                              'glpi_entities'  => 'id']]],
               'WHERE'    => ['glpi_contracts_items.items_id'  => $ID ,
                              'glpi_contracts_items.itemtype'  => $type,
                              'glpi_contracts.id' => 'glpi_contracts_items.contracts_id']
                              + $dbu->getEntitiesRestrictCriteria($itemtable,'','',true),
               'ORDER'    => 'glpi_contracts.name'];
        print_r($query);
                $result = $DB->request($query);
                $number = count($result);
                echo($number);
Plus d'erreur sql
mais pas de sortie non plus sad

voici ce que j'ai :
Array ( [SELECT] => Array ( [0] => * ) [FROM] => Array ( [0] => glpi_contracts_items [1] => glpi_contracts ) [LEFT JOIN] => Array ( [glpi_entities] => Array ( [FKEY] => Array ( [glpi_contracts] => entities_id [glpi_entities] => id ) ) ) [WHERE] => Array ( [glpi_contracts_items.items_id] => 7336 [glpi_contracts_items.itemtype] => Computer [glpi_contracts.id] => glpi_contracts_items.contracts_id ) [ORDER] => glpi_contracts.name ) 0TCPDF ERROR: Some data has already been output, can't send PDF file

> la requete me renvoie un number à 0, alors qu'elle devrait retourner 2.
    je me pose la question sur le lien entre contracts_id et id (juste avant le $dbu)
   en effet dans le print_r je vois :
   [glpi_contracts.id] => glpi_contracts_items.contracts_id, comme si lien entre la colonne glpi_contracts_id et une variable glpi_contracts_items.contracts_id , qui contiendrait 0 ?

> d'ou vient l'erreur TCPDF ERROR ??? (-> un coup de CTRL F5 sur le navigateur resout cette erreur : cache ?)

Ne reste alors que la jointure smile

Last edited by ec2311 (2021-10-26 10:11:30)


GLPI 10.0.10
GLPIinventory 1.3.4

Agents : FI (2.6, 2.5) et Glpiagents (1.7)

Offline

#6 2021-10-29 15:46:32

yllen
GLPI-DEV
From: Sillery (51)
Registered: 2008-01-14
Posts: 15,278

Re: [RESOLU][PDF] 2.0.0 : Bogue sur Contrat

Votre bug a été créé dans la nouvelle forge : https://github.com/yllen/pdf/issues/1

Pouvez-vous confirmer la correction https://github.com/yllen/pdf/commit/dfb … 2d094d4213
et- me faire un retour que je puisse fermer le bug?


CentOS 6.5 - CentOS 7.x
PHP 5.6 - PHP 7.x - MySQL 5.6  - MariaDB 10.2 + APC + oOPcache
GLPI from 0.72 to dev version
Certifiée ITIL (ITV2F, ITILF, ITILOSA)

Offline

#7 2021-11-02 12:54:55

ec2311
Member
Registered: 2016-04-07
Posts: 309

Re: [RESOLU][PDF] 2.0.0 : Bogue sur Contrat

Bonjour Yllen,

Merci cela fonctionne smile
Super


GLPI 10.0.10
GLPIinventory 1.3.4

Agents : FI (2.6, 2.5) et Glpiagents (1.7)

Offline

#8 2021-11-09 15:48:09

yllen
GLPI-DEV
From: Sillery (51)
Registered: 2008-01-14
Posts: 15,278

Re: [RESOLU][PDF] 2.0.0 : Bogue sur Contrat

Super. Je clos ce post


CentOS 6.5 - CentOS 7.x
PHP 5.6 - PHP 7.x - MySQL 5.6  - MariaDB 10.2 + APC + oOPcache
GLPI from 0.72 to dev version
Certifiée ITIL (ITV2F, ITILF, ITILOSA)

Offline

Board footer

Powered by FluxBB