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-16 14:03:04

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

[Resolu]Code PHP-plugin reports-GLPI

Bonjour à tous,

J'essaie de créer un rapport dans lequel je pourrai afficher à partir d'une liste déroulante des informations souhaitées comme par exemple afficher des éléments de la base glpi ayant des contrats de moins de 2 mois. Mais le problème est que lorsque j'écris le code pour la liste déroulante avec un <select name="duree"><option value="1">moins de 2 mois</option></select> par exemple j'ai un code d'erreur dans le navigateur... Quelqu'un pourrait m'aider svp? J'utilise la version 9.1 de glpi. Je vous remercie et toutes mes excuses pour un quelconque dérangement. smile

Ci-dessous un bout de mon code:

<?php
$USEDBREPLICATE         = 1;
$DBCONNECTION_REQUIRED  = 0;

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

//titre du rapport
$report = new PluginReportsAutoReport("Liste des machines sous contrats");

echo "Durée:'<select name="duree">
                <option value="1">Sous contrats</option>
                <option value="2">Moins de 3 mois</option>
                <option value="3">Moins de 2 mois</option>
            </select>'";


//définition des colonnes de l'affichage;
$report->setColumns(array(new PluginReportsColumn('Numero_inventaire',"Numero_inventaire"), new PluginReportsColumn('Machines', "Machines"),new PluginReportsColumn('Utilisateurs',"Utilisateurs"), new PluginReportsColumn('Entites', "Entites"), new PluginReportsColumn('Contrats', "Contrats"), new PluginReportsColumn('Fin_contrat', "Fin_contrat")));


//Requête à exécuter
$query="SELECT glpi_computers.otherserial AS Numero_inventaire, glpi_computers.name AS Machines,glpi_computers.contact AS Utilisateurs, glpi_entities.completename AS Entites, glpi_contracts.name AS Contrats, DATE_ADD(begin_date, INTERVAL duration MONTH) AS Fin_contrat
FROM glpi_computers
JOIN  glpi_entities ON glpi_entities.id=glpi_computers.entities_id
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.contracts_id
WHERE 1=1";
Je ne l'ai pas terminé encore. j'ai essayé de mettre juste la liste déroulante afin de voir ce que cele donnera avant de commencer par coder les actions à exécuter sur cette liste

Last edited by miss (2017-05-16 17:17:54)

Offline

#2 2017-05-16 15:22:55

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

Re: [Resolu]Code PHP-plugin reports-GLPI

pour afficher une liste de selection : utilisez  les options ci dessous

$option = array('Sous contrats','Moins de 3 mois','Moins de 2 mois');
$selection = new PluginReportsArrayCriteria($report,'DUREE','Durée',$option);
$report->displayCriteriasForm();

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-16 15:37:12

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

Re: [Resolu]Code PHP-plugin reports-GLPI

Merci pour votre réponse.
Je ne sais pas si c'est à mon niveau mais cela ne fonctionne pas. J'ai une erreur 500

Offline

#4 2017-05-16 16:03:58

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

Re: [Resolu]Code PHP-plugin reports-GLPI

le code ci dessous focntionne chez moi :

//titre du rapport
$report = new PluginReportsAutoReport("Liste des machines sous contrats");

//critère de selection;
//liste des options;
$option = array('Sous contrats','Moins de 3 mois','Moins de 2 mois');
$selection = new PluginReportsArrayCriteria($report,'DUREE','Durée',$option);
$report->displayCriteriasForm();

//définition des colonnes de l'affichage;
$report->setColumns(array(new PluginReportsColumn('Numero_inventaire',"Numero_inventaire"), new PluginReportsColumn('Machines', "Machines"),new PluginReportsColumn('Utilisateurs',"Utilisateurs"), new PluginReportsColumn('Entites', "Entites"), new PluginReportsColumn('Contrats', "Contrats"), new PluginReportsColumn('Fin_contrat', "Fin_contrat")));

//Requête à exécuter
$query="SELECT glpi_computers.otherserial AS Numero_inventaire, glpi_computers.name AS Machines,glpi_computers.contact AS Utilisateurs, glpi_entities.completename AS Entites, glpi_contracts.name AS Contrats, DATE_ADD(begin_date, INTERVAL duration MONTH) AS Fin_contrat
FROM glpi_computers
JOIN  glpi_entities ON glpi_entities.id=glpi_computers.entities_id
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.contracts_id
WHERE 1=1";

switch ($selection->getParameterValue()) {
    case 0:
    //Sous contrats;
        $query .=" AND DATE_ADD(glpi_contracts.begin_date, INTERVAL  glpi_contracts.duration MONTH)>NOW()";
        break;
    case 1:
        // moins de 3 mois;
    $query .=" AND DATE_ADD(glpi_contracts.begin_date, INTERVAL  glpi_contracts.duration MONTH)>NOW() AND DATE_ADD(glpi_contracts.begin_date, INTERVAL glpi_contracts.duration MONTH)<DATE_ADD(NOW(), INTERVAL 3 MONTH)"; 
       break;
    case 2:
        // moins de 2 mois;
    $query .=" AND DATE_ADD(glpi_contracts.begin_date, INTERVAL  glpi_contracts.duration MONTH)>NOW() AND DATE_ADD(glpi_contracts.begin_date, INTERVAL glpi_contracts.duration MONTH)<DATE_ADD(NOW(), INTERVAL 2 MONTH)";

        break;
}

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



   Html::footer();

edit :  c'est là que le 1=1 présente de l'intérêt :  toutes mes options  du switch commencent par " AND "  et je peux en avoir 0 ou plusieurs, la syntaxe sql est toujours correcte .;-)


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-16 16:19:17

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

Re: [Resolu]Code PHP-plugin reports-GLPI

Merci beaucoup.
Pourriez-vous m'expliquer pourquoi il y a un point avant le egal (.=) devant chaque query svp?

Last edited by miss (2017-05-16 16:22:53)

Offline

#6 2017-05-16 16:33:41

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

Re: [Resolu]Code PHP-plugin reports-GLPI

$query .= "xxx";

est un raccourci pour

$query = $query . "xxxx";


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

#7 2017-05-16 16:37:38

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

Re: [Resolu]Code PHP-plugin reports-GLPI

Le point sert-il à concaténer?

Last edited by miss (2017-05-16 16:41:03)

Offline

#8 2017-05-16 16:38:12

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

Re: [Resolu]Code PHP-plugin reports-GLPI

en php oui


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

#9 2017-05-16 16:40:31

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

Re: [Resolu]Code PHP-plugin reports-GLPI

D'accord. Merci

Last edited by miss (2017-05-16 17:17:15)

Offline

Board footer

Powered by FluxBB