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 2017-05-12 14:19:09

miss
Member
Registered: 2017-05-05
Posts: 108

[Résolu]Plugin reports-GLPI

Bonjour à tous,
Débutante de GLPI, j'ai commencé depuis un moment par travailler avec: inventaire, mis au rebut, création de groupes/d'utilisateurs, création de contrats, de périphériques, d'entités...etc.
Mais depuis deux jours, j'ai un problème avec la création d'un rapport. J'ai bien installé le plugin reports, j'ai créé un fichier PHP et un fichier de langue qui lui est associé. Mon souci se pose au niveau de l'exécution de mon fichier PHP. Le fichier est bien reconnu mais le navigateur m'affiche une erreur 500. J'ai rectifié ma requête SQL qui d'ailleurs fonctionne bien quand je l'essaie dans PHPmyadmin. Quelqu'un aurait une solution pour moi svp? C'est vraiment important pour moi, je suis en stage et je dois vraiment avancer dans le travail. J'utilise la version 9.1 de GLPI. Je vous remercie et toutes mes excuses pour un quelconque dérangement smile

Ci-dessous, un aperçu de mon code PHP:

<?php
$USEDBREPLICATE        = 1; //Le rapport sera routé vers la base esclave
$DBCONNECTION_REQUIRED = 0; // not really a big SQL request

include("../../../../inc/includes.php");

//Le nom du rapport est Liste des machines sous contrats
$report=new PluginReportsAutoReport("Computers with contracts");

$report->setColumns(array(new PluginReportsColumn('Name', __('Nom')), new PluginReportsColumn('Contract', __('Contrats')));

$query='SELECT glpi_computers.name AS Nom, glpi_contracts.name AS Contrats FROM glpi_computers, glpi_contracts
INNER JOIN glpi_contracts_items
WHERE glpi_computers.id=glpi_contracts_items.items_id AND glpi_contracts.id=glpi_contracts_items.id';

$report->setGroupBy('glpi_computers.name');
$report->setSqlRequest($query);
$report->execute();

?>

Last edited by miss (2017-05-15 09:05:25)

Offline

#2 2017-05-12 14:59:24

LaDenrée
HELPER
Registered: 2012-11-19
Posts: 6,146

Re: [Résolu]Plugin reports-GLPI

bonjour, la définition de vos colonnes me semble inhabituelle,

$report->setColumns(array(new PluginReportsColumn('Name', __('Nom')), new PluginReportsColumn('Contract', __('Contrats')));

$query='SELECT glpi_computers.name AS Nom, glpi_contracts.name AS Contrats FROM glpi_computers, glpi_contracts

le premier paramètre de PluginReportsColumn doit correspondre à l'alias que vous définissez dans la requete


Trouver la panne avant de réparer...
GLPI10.0.10 (ubuntu 22.04 PHP8.1  Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6

Offline

#3 2017-05-12 15:06:09

miss
Member
Registered: 2017-05-05
Posts: 108

Re: [Résolu]Plugin reports-GLPI

Merci pour votre répondre, mais c'est justement ce que je ne comprends pas bien dans la notion PHP d'un plugin, je n'ai fait que suivre le code du fichier location.php du fichier glpi/plugins/reports/report/Location.
J'ai quand même essayé de rectifier mon erreur suivant votre solution mais j'ai toujours l'erreur 500.
Merci de m'éclairer un peu plus sur mon erreur. smile

Last edited by miss (2017-05-12 15:10:58)

Offline

#4 2017-05-12 15:23:53

LaDenrée
HELPER
Registered: 2012-11-19
Posts: 6,146

Re: [Résolu]Plugin reports-GLPI

la colonne est définie par 2 paramètres, son nom ( cous avez mis Name) et le libellé qui s'affiche (vous avez choisi  __('Nom')  c'est à dire la traduction de nom dans les fichiers .mo et .po) .



new PluginReportsColumn('Name', __('Nom'))

pour un essai vous auriez pu mettre le libellé de la colonne en dur  :

new PluginReportsColumn('Name',"LeLibellédeMaColonne")

ensuite dans votre requète sql, toutes les colonnes ne sont pas forcément dans le même ordre que dans l'affichage des colonnes, il faut dont indiquer quelle colonne de votre query correspond à la première colonne du tableau :

Il faut donc le même alias mysql de le nom de la colonne  ( les mots en rouge DOIVENT être identiques, les mots en bleu aussi etc... dans le post précédent)


ensuite, comme vous avez défini un alias, le "group by" doit repondre cet alias plutot que le nom de la colonne.  $report->setGroupBy('Nom');

vous avez une erreur dans votre sql car la requète vous retourne les pc mais aussi les imprimantes etc... il faut définir itemtype='computer'


ce qui donne :

$USEDBREPLICATE         = 1;
$DBCONNECTION_REQUIRED  = 0;

// Initialization of the variables
define('GLPI_ROOT',  '../../../..');
include (GLPI_ROOT . "/inc/includes.php");

//titre du rapport dans la liste de selection,  soit en dur ici, soit mettre à jour la variable dans les fichiers de traduction;
$report = new PluginReportsAutoReport("Computers with contracts");

//définition des colonnes de l'affichage;
$report->setColumns(array(new PluginReportsColumn('Nom',"Nom"), new PluginReportsColumn('Contrats', "Contrat")));

$query="SELECT glpi_computers.name AS Nom, glpi_contracts.name AS Contrats
 FROM glpi_computers
INNER JOIN glpi_contracts_items ON  glpi_computers.id=glpi_contracts_items.items_id AND glpi_contracts_items.itemtype='Computer'
JOIN  glpi_contracts ON  glpi_contracts.id=glpi_contracts_items.id ";

$report->setGroupBy('Nom');
$report->setSqlRequest($query);
$report->execute();



   Html::footer();

Trouver la panne avant de réparer...
GLPI10.0.10 (ubuntu 22.04 PHP8.1  Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6

Offline

#5 2017-05-12 15:37:39

miss
Member
Registered: 2017-05-05
Posts: 108

Re: [Résolu]Plugin reports-GLPI

Merci beaucoup.
Je comprends mieux avec cette explication. Je suis vraiment contente. En corrigeant mes erreurs tout en suivant tout ce détail j'ai retrouvé le sourire. Cela fonctionne à merveille. Plus d'erreur 500. C'est vraiment gentil de prendre votre temps pour écrire tout ce détail. Toutes mes excuses pour le dérangement.

Aidez-moi à marquer ce sujet comme résolu, svp. smile

Last edited by miss (2017-05-12 15:38:43)

Offline

#6 2017-05-12 15:41:54

LaDenrée
HELPER
Registered: 2012-11-19
Posts: 6,146

Re: [Résolu]Plugin reports-GLPI

pour marquer résolu, vous devez modifier le titre (en editant le premier post)
je l'ai fait pour vous.


Trouver la panne avant de réparer...
GLPI10.0.10 (ubuntu 22.04 PHP8.1  Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6

Offline

Board footer

Powered by FluxBB