You are not logged in.
Pages: 1
Topic closed
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.
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
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
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
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
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
$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
Le point sert-il à concaténer?
Last edited by miss (2017-05-16 16:41:03)
Offline
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
D'accord. Merci
Last edited by miss (2017-05-16 17:17:15)
Offline
Pages: 1
Topic closed