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 2007-01-18 12:15:20

Mavrick
Member
Registered: 2007-01-18
Posts: 35

Vue de Synthèse du Matériel (Ordinateurs & Reseaux / Groupes & Types)

Bonjour à tous,

Avant toute chose comme c'est mon premier post. FELICITATION pour ce merveilleux outil, et l'effort que vous founissez pour que nous puissions en profiter ..! Et bonne continuation pour l'avenir.

Ayant cherché mais n'ayant pas trouvé dans le forum et en manipulant l'application, je souhaiterais savoir s'il existe un moyen de visualiser les informations des Ordinateurs d'un point de vue synthétique / aux types & aux Groupes.
Quand je parle de synthétique je pense à quelque chose comme la page dans Inventaire => Statut => Synthèse mais pour le matériel Ordinateur et/ou réseau.

Je sais qu'il reste toujours la recherche puis copier/coller, mais voila.

Merci d'avance pour vos réponses.


OS : Ubuntu  6.06.1 LTS
Installation : Package Ocs NG V 4100
Serveur : Apache .... MySql : 5.... / Langage : PHP 5....
GLPI : 0.71.3

Offline

#2 2007-01-18 18:17:04

Mavrick
Member
Registered: 2007-01-18
Posts: 35

Re: Vue de Synthèse du Matériel (Ordinateurs & Reseaux / Groupes & Types)

Comme personne n'a de réponses et que de faire du copier/coller dans excel souvent (puisque c'est une page de synthèse il la faut souvent et à jour).

Je me suis donc inspiré d'une de vos requêtes en mode debug et voila ce qu'il en est sorti. Cela me semble correct.

####
##Requete pour obtenir la synthèse des Types d'ordinateurs par Groupe.
####
select glpi_groups.name as groupe, glpi_type_computers.name as Computers_type, count(type) as Total
FROM glpi_computers
LEFT JOIN glpi_type_computers ON (glpi_type_computers.ID = glpi_computers.type)
LEFT JOIN glpi_groups ON (glpi_groups.ID = glpi_computers.FK_groups)
GROUP BY groupe, Computers_type



Maintenant je ne suis pas du tout développeur donc ça vaut ce que ça vaut.
En espérant que cela pourra aider d'autres personnes.

En revanche, s'il existe une solution je suis toujours preneur.

Last edited by Mavrick (2007-01-18 18:17:47)


OS : Ubuntu  6.06.1 LTS
Installation : Package Ocs NG V 4100
Serveur : Apache .... MySql : 5.... / Langage : PHP 5....
GLPI : 0.71.3

Offline

#3 2007-01-27 22:21:32

Mavrick
Member
Registered: 2007-01-18
Posts: 35

Re: Vue de Synthèse du Matériel (Ordinateurs & Reseaux / Groupes & Types)

Bonsoir,

comme cette solution ne me convenait pas. Ouvrir Toad et valider une requete pour avoir un affichage présentable ce n'etait pas viable. Pour moi en tout cas.
Donc j'ai mis ecrit le petit bout de code suivant que j'ai intégré à gli. Cel asemble fonctionné. En tout cas mes données de sortie semble correcte.

AVANT TOUTE CHOSE JE PRECISE QUE JE NE SUIS PAS DU TOUT MAIS DU TOUT DEVELOPPEUR et que ce qui suis dessous n'est ni beau ni propre. Déconseillé aux âmes sensibles lol

Je me suis inspiré de synthèse des statut et j'ai intégré les informations suivantes et modifié les fichiers suivants.

Dans /front/state.php
ajouter

if (!isset($_GET["TypeGroup"])) $_GET["TypeGroup"] = "no";

puis remplacer if ($_GET["synthese"]=="yes")
par

if ($_GET["TypeGroup"]=="yes")
showSyntheseTypGroupSummary($_SERVER['PHP_SELF']);
elseif ($_GET["synthese"]=="yes")

Dans /inc/state.function.php
ajouter à la fonction titleState()

echo "<td><a class='icon_consol' href='".$HTMLRel."front/state.php?TypeGroup=yes'>Synthese Type_Computers/Groupes</a></td>";

au dessus de la ligne  echo "</tr></table></div>";

puis ajouter les lignes suivantes en bas de la page avant ?>

function showSyntheseTypGroupSummary($target){
    global $db,$lang,$cfg_glpi;
  
    $query = "SELECT id,name FROM glpi_type_computers";
    $result = mysql_query($query) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
    
    
    $type_computers=array();
          $i=1;//On commence les var à 1 => suite pbs avec les id des intitulés supprimés dans la bdd
          while($data = mysql_fetch_assoc($result)){
                $type_computers[$i]["id"]=$data["id"];
                $type_computers[$i]["name"]=$data["name"];
                $i++;
        }
      
    $query = "SELECT id,name FROM glpi_groups"; 
    $result = mysql_query($query) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
    
    $groups=array();
          $i=1;//On commence les var à 1 => suite pbs avec les id des intitulés supprimés dans la bdd
                while($data = mysql_fetch_assoc($result)){
                $groups[$i]["id"]=$data["id"];
                $groups[$i]["name"]=$data["name"];
                $i++;
            }
            
        #######################################
    #########Debut de l'affichage##########
    #######################################
        // Produce headline
            echo "<div align='center'><table  class='tab_cadrehov'><tr>";

            echo "<th>";
          echo $lang["common"][35]."</th>"; #=> $lang["common"][35]="Groupe";
          for ($i=1;$i <= count($type_computers);$i++ ) {
      echo "<th><a href='computer.php?contains%5B0%5D=".$type_computers[$i]["name"]."&field%5B0%5D=4&sort=1&deleted=N&start=0'>".$type_computers[$i]["name"]."</a></th>";
  
    }
    echo "<th>Total</th>";
    echo "<tr/>";
        #####################
    ####Debut du remplissage du tableau
    #####################
    $i='1'; //pour le id_type_computers
    $j='1'; //pour le id_groups
    $tot_C = array(); //pour le total des colones
 
    while ($j <= count($groups)) {
      
      $tot_L=0; //pour le total ligne
          
      echo "<tr class='tab_bg_2'><td align='center'><strong><a href='computer.php?contains%5B0%5D=".$groups[$j]["name"]."&field%5B0%5D=71&sort=1&deleted=N&start=0'>".$groups[$j]["name"]."</a></strong></td>";
      
      for ($i=1;$i <= count($type_computers);$i++ ) {
    
        $val_type_computers = $type_computers[$i]["id"];
        $val_groups = $groups[$j]["id"];
        $query = "SELECT COUNT(id) as cmp FROM glpi_computers WHERE type=$val_type_computers AND FK_groups=$val_groups ";

        $result = mysql_query($query) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
        
          $data = mysql_fetch_assoc($result);
          echo "<td align='center'>".$data["cmp"];
          $tot_L+=$data["cmp"];
          $tot_C[$i][$j]=$data["cmp"];
      }
         echo "<td align='center'><strong>".$tot_L."</td>";
       echo "</tr>";
      $j++;
    }

    echo "<tr class='tab_bg_2'><td align='center'><strong>Total</strong></td>";
    $total=0;
    for ($j=1;$j <= count($type_computers);$j++ ) {
         $tot = 0;
         for ($i=1;$i <= count($groups) ;$i++ ) {      
           $tot +=$tot_C[$j][$i];
        }
    echo "<td align='center'><strong>".$tot."</td>";
    $total+=$tot;     
    }
    echo "<td align='center'><strong>".$total."</td>";
    echo "</tr>";    
    echo "</table></div>";
      
}

pour visualiser ce que cela produit allez dans Inventaire => Statut


Pour information, j'ai réalisé ce bout de code car je trouve que, avec la façon dont j'utilise glpi, qu'il manque des informations de vue d'ensemble. Malgre les rapport qui pour moi eux sont trop vague.

Vla, bonne soirée.

Last edited by Mavrick (2007-01-28 16:06:02)


OS : Ubuntu  6.06.1 LTS
Installation : Package Ocs NG V 4100
Serveur : Apache .... MySql : 5.... / Langage : PHP 5....
GLPI : 0.71.3

Offline

#4 2007-01-28 15:56:29

Mavrick
Member
Registered: 2007-01-18
Posts: 35

Re: Vue de Synthèse du Matériel (Ordinateurs & Reseaux / Groupes & Types)

Ben voila c'est encore moi.

Après une nuit de sommeil en aillant réfléchis toute la nuit, j'ai réalisé quelque petite modification sur ce que j'ai posté au dessus. Je me suis dit que ce n'était pas bien d'abîmer les fichiers originaux de glpi avec mes verrues donc ...

j'ai réalisé ce qui suit un peux plus bas.

HUM ... Après promis que je ne vous ennuierais plus avec mes babiolles. Donc Codeur sensible toujours s'abstenir sous peine d'infarctus et nb que les liens ne fonctionnent pas. J'ai pas eu le courage de me pencher dessus.

Dans /front/  créer un dossier Synthese.php et coller les lignes suivantes

<?php
/// ----------------------------------------------------------------------
// Original Author of file:
// Purpose of file:
// ----------------------------------------------------------------------

include ("_relpos.php");

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

checkRight("reports","r");

commonHeader($lang["title"][16],$_SERVER['PHP_SELF']);



# Titre


echo "<form name='form' method='post' action='Synthese.list.php'>";

echo "<div align='center'>";
echo "<table class='tab_cadre' >";
//echo "<tr><th align='center' colspan='2' ><big><b>".$lang["reports"][58]."</b></big></th></tr>";
echo "<tr><th align='center' colspan='2' ><big><b>Synthese avancee</b></big></th></tr>";

# 3. Selection d'affichage pour generer la liste

echo "<tr class='tab_bg_2'>";
echo "<td width='150'  align='center'>";
echo "<p><b>Parametre 1</b></p> ";
echo "<p><select name='Param1' size='8' >";
//echo "<option value='0' selected>".$lang["reports"][16]."</option>";
echo "<option value='GROUPE'>Groupe</option>";
echo "<option value='TYPE_COMPUTER' selected>Type_Computer</option>";
echo "<option value='LOCATION'>Lieu</option>";
echo "<option value='ENTERPRISES'>Entreprises</option>";
echo "</select> </p></td>";

echo "<td width='150' align='center'><p><b>Parametre 2</b></p> ";
echo "<p> <select name='Param2'  size='8' >";
//echo " <option value='toutes' selected>".$lang["reports"][16]."</option>";
echo "<option value='TYPE_COMPUTER'>Type_Computer</option>";
echo "<option value='GROUPE' selected>Groupe</option>";
echo "<option value='LOCATION'>Lieu</option>";
echo "<option value='ENTERPRISES'>Entreprises</option>";

echo "</select></p></td></tr>";

echo "<tr class='tab_bg_2'><td colspan='2'  align='center'><p><input type='submit' value='Afficher la synthese' class='submit'></p></td></tr>";


echo "</table>";
echo "</div>";
echo "</form>";



commonFooter();

?>

puis

[u]Toujours dans /front/ Créer le fichier Synthese.list.php et coller dedans les lignes suivantes[u]

<?php
// ----------------------------------------------------------------------
// Original Author of file:
// Purpose of file: Permet de réaliser des affichage de synthèse sur les éléments ayant des liens en cle Etrangère avec la table glpi_computers. 
// ----------------------------------------------------------------------

include ("_relpos.php");


$NEEDED_ITEMS=array("contract","infocom");
include ($phproot . "/inc/includes.php");


checkRight("reports","r");

commonHeader($lang["title"][16],$_SERVER['PHP_SELF']);

// Ajout variable 
$item_table_name=array();
$item_table_name[GROUPE] = "glpi_groups";
$item_table_name[TYPE_COMPUTER] = "glpi_type_computers";
$item_table_name[ENTERPRISES] = "glpi_enterprises";
$item_table_name[LOCATION] = "glpi_dropdown_locations";

$glpi_computers_col_name=array();
$glpi_computers_col_name[GROUPE] = "FK_groups";
$glpi_computers_col_name[TYPE_COMPUTER] = "type";
$glpi_computers_col_name[ENTERPRISES] = "FK_glpi_enterprise";
$glpi_computers_col_name[LOCATION] = "location";

$title=array();
$title[TYPE_COMPUTER] = "Type des Computers";
$title[GROUPE] = "Groupes";
$title[ENTERPRISES] = "Entreprises";
$title[LOCATION] = "Lieu";


echo "<div align='center'><big><strong>Synthese ".$title[$_POST["Param1"]]." / ".$title[$_POST["Param2"]]."</strong></big><br><br>";
showSyntheseTypGroupSummary($item_table_name[$_POST["Param1"]],$item_table_name[$_POST["Param2"]],$_POST["Param2"],$glpi_computers_col_name[$_POST["Param1"]],$glpi_computers_col_name[$_POST["Param2"]]);
echo "</div>";
commonFooter();



function showSyntheseTypGroupSummary($Param1,$Param2,$Param3,$ColParam1,$ColParam2){
    global $db,$lang,$cfg_glpi;
  
  
//Créattion du tableau pour les valeurs du param1
    $query = "SELECT id,name FROM $Param1";
    $result = mysql_query($query) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
    
    
    $A_Param1=array();
          $i=1;//On commence les var à 1 => suite pbs avec les id des intitulés supprimés dans la bdd
          while($data = mysql_fetch_assoc($result)){
                $A_Param1[$i]["id"]=$data["id"];
                $A_Param1[$i]["name"]=$data["name"];
                $i++;
        }

//Créattion du tableau pour les valeurs du param2      
    $query = "SELECT id,name FROM $Param2"; 
    $result = mysql_query($query) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
        
    $A_Param2=array();
          $i=1;//On commence les var à 1 => suite pbs avec les id des intitulés supprimés dans la bdd
                while($data = mysql_fetch_assoc($result)){
                $A_Param2[$i]["id"]=$data["id"];
                $A_Param2[$i]["name"]=$data["name"];
                $i++;
            }

//Créattion du tableau pour les valeurs utiles du param2            
    $query = "select $ColParam2 as Valid from glpi_computers group by $ColParam2";
    $result = mysql_query($query) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
        
    $A_Valid_Param2=array();
          $i=1;//
                while($data = mysql_fetch_assoc($result)){
                $A_Valid_Param2[$i]["Valid"]=$data["Valid"];
                $i++;
            }

#######################################
#########Debut de l'affichage##########
#######################################
        // Produce headline
            echo "<div align='center'><table  class='tab_cadrehov'><tr>";

            echo "<th>";
          echo $Param3."</th>"; #=> $lang["common"][35]="Groupe";
          for ($i=1;$i <= count($A_Param1);$i++ ) {
      echo "<th><a href='computer.php?contains%5B0%5D=".$A_Param1[$i]["name"]."&field%5B0%5D=4&sort=1&deleted=N&start=0'>".$A_Param1[$i]["name"]."</a></th>";
  
    }
    echo "<th>Total</th>";
    echo "<tr/>";
        #####################
    ####Debut du remplissage du tableau
    #####################
    $i='1'; //pour le id_type_computers
    $j='1'; //pour le id_groups
    $tot_C = array(); //pour le total des colones
 
    while ($j <= count($A_Param2)) {
      
      $tot_L=0; //pour le total ligne
      $Val_A_Param2 = $A_Param2[$j]["id"];
      
      //on teste si la valeur de l'entreprise par exemple doit être affiché. Si aucun matériel n'est associé cela ne sert à rien.
      //in_array a explorer' mais je n'arrive pas à faire fonctionner cette fonction
      $res=false;
      for ($i_valid=1;$i_valid <= count($A_Valid_Param2) ; $i_valid++) {
        if ($Val_A_Param2 == $A_Valid_Param2[$i_valid]["Valid"]) {
              $res=true;
          }
        }
      
      if($res == 1) //cad si les lignes davant être affiché sont utiles. cad Si elles comportent un lien ave les computers.
      {
        echo "<tr class='tab_bg_2'><td align='center'><strong><a href='computer.php?contains%5B0%5D=".$A_Param2[$j]["name"]."&field%5B0%5D=71&sort=1&deleted=N&start=0'>".$A_Param2[$j]["name"]."</a></strong></td>";
      
        for ($i=1;$i <= count($A_Param1);$i++ ) {
    
        $Val_A_Param1 = $A_Param1[$i]["id"];
        $query = "SELECT COUNT(id) as cmp FROM glpi_computers WHERE $ColParam1=$Val_A_Param1 AND $ColParam2=$Val_A_Param2";   
        $result = mysql_query($query) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
          
              $data = mysql_fetch_assoc($result);
             echo "<td align='center'>".$data["cmp"];
             $tot_L+=$data["cmp"];
             $tot_C[$i][$j]=$data["cmp"];
        }
      
         echo "<td align='center'><strong>".$tot_L."</td>";
      echo "</tr>";
      }
      $j++;
    }

    echo "<tr class='tab_bg_2'><td align='center'><strong>Total</strong></td>";
    $total=0;
    for ($j=1;$j <= count($A_Param1);$j++ ) {
         $tot = 0;
         for ($i=1;$i <= count($A_Param2) ;$i++ ) {      
           $tot +=$tot_C[$j][$i];
        }
    echo "<td align='center'><strong>".$tot."</td>";
    $total+=$tot;     
    }
    echo "<td align='center'><strong>".$total."</td>";
    echo "</tr>";    
    echo "</table></div>";    
}



?>

Pour utiliser tout cela dans votre url de glpi mettre front/Synthese.php

En espérant que cela servira à d'autre que moi.
Maintenant je vous dit à bientôt pour des questions sur le fonctionement de glpi wink

Last edited by Mavrick (2007-01-28 15:58:52)


OS : Ubuntu  6.06.1 LTS
Installation : Package Ocs NG V 4100
Serveur : Apache .... MySql : 5.... / Langage : PHP 5....
GLPI : 0.71.3

Offline

#5 2007-01-31 12:23:17

DiaBoliK
Member
Registered: 2007-01-11
Posts: 32

Re: Vue de Synthèse du Matériel (Ordinateurs & Reseaux / Groupes & Types)

j'ai tester ton script !
Je trouve ça vraiment bien, j'aime beaucoup les synthèses comme ça !


OCSNG : version 1.0
GLPI : 0.68.3
Serveur Windows 2003
Apache 2

Offline

#6 2007-02-01 09:29:02

DiaBoliK
Member
Registered: 2007-01-11
Posts: 32

Re: Vue de Synthèse du Matériel (Ordinateurs & Reseaux / Groupes & Types)

après plusieur test, j'ai remarquer que ton script bug, il me dit par exemple que j'ai 15 serveurs, alors que j'en et que 12


OCSNG : version 1.0
GLPI : 0.68.3
Serveur Windows 2003
Apache 2

Offline

#7 2007-02-01 17:03:30

Mavrick
Member
Registered: 2007-01-18
Posts: 35

Re: Vue de Synthèse du Matériel (Ordinateurs & Reseaux / Groupes & Types)

Je suis désolé qu'il fonctionne mal pour vous.

Pour moi les données que ce petit bout de code remonte sont justes.
Il doit donc très certainement y avoir une erreur quelque part puisque pour vous ce n'est pas le cas.

Sinon, il faut peut-être jeter un coup d'oeil du côté des postes mis à la corbeille. Je n'ai pas tenu compte de ce cas et je ne sais pas comment il est géré.

Je jetterai un coup d'oeil dès que possible.
Sinon pouvez-vous me préciser, afin que je cherche dans la bonne direction, quel choix vous avez choisi en param1 & Param2.

merci


OS : Ubuntu  6.06.1 LTS
Installation : Package Ocs NG V 4100
Serveur : Apache .... MySql : 5.... / Langage : PHP 5....
GLPI : 0.71.3

Offline

#8 2007-02-01 17:14:35

DiaBoliK
Member
Registered: 2007-01-11
Posts: 32

Re: Vue de Synthèse du Matériel (Ordinateurs & Reseaux / Groupes & Types)

j'ai choisi
Param 1 : Type_computer
Param 2 : Lieu

Mais je vien de remarquer quil y a un problème que sur 1 seul lieu, les autres lieu il n'y a pa de prob


OCSNG : version 1.0
GLPI : 0.68.3
Serveur Windows 2003
Apache 2

Offline

Board footer

Powered by FluxBB