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 2018-03-30 09:37:04

bastien.prost
Member
Registered: 2016-07-22
Posts: 17

Recherche des ID de lieu via l'API REST

Bonjour,

Je cherche à récupérer l'ID d'un lieu via l'api pour pouvoir ensuite importer mes ordinateurs avec une localisation. Voici le code pour ma recherche :

echo "<br/> lieu : $lieu <br/>";
echo "recherche de l'id du lieu<br/>";
$ch = curl_init();
$url=$api_url . "/search/location?forcedisplay[0]=2&criteria[0][field]=1&criteria[0][searchtype]=0&criteria[0][value]=^" . $lieu . "$";
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$json = curl_exec($ch);
curl_close ($ch);
$obj = json_decode($json,true);
print_r($obj['data'][0]);
$lieu_id=$obj['data'][0][2];
echo "<br/> lieuid $lieu_id <br/>";

Mes lieux dans GLPI sont sous la forme suivante : VILLE > BATIMENT > ETAGE
Version de GLPI : 9.2.2

Je me retrouve confronté à deux problèmes. Tout d'abord, la recherche est très longue (environ 2min avant qu'il me retourne mon ID). Ensuite l'ID retourné n'est pas le bon, j'ai l'impression qu'il ne prend que la ville pour la recherche.

Voici ce que me retourne mon code :

lieu : VILLE > BATIMENT > ETAGE
recherche de l'id du lieu
Array ( [1] => VILLE [80] => Root entity [2] => 808 )
lieuid 808

Merci d'avance pour votre aide.

Bastien

Edit : En fait je me suis rendu compte que le tableau renvoyé par ma recherche ne contenait pas qu'un seul lieu mais tous mes lieux commençant par VILLE. Il me retourne donc la première entrée du tableau.  Comment ce fait-il que je n'ai pas qu'un seul résultat?

Last edited by bastien.prost (2018-03-30 12:02:14)

Offline

#2 2018-03-30 11:57:37

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

Re: Recherche des ID de lieu via l'API REST

vous avez beaucoup d'entités ?

$lieu=str_replace(" ","%20",$lieu);
echo "<br/> lieu : $lieu <br/>";
echo "recherche de l'id du lieu<br/>";
$ch = curl_init();
$url=$api_url . "/search/Location?forcedisplay[0]=2&criteria[0][field]=1&criteria[0][searchtype]=contains&criteria[0][value]=^" . $lieu . "$";
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$json = curl_exec($ch);
curl_close ($ch);
$obj = json_decode($json,true);
print_r($json);
print_r($obj['data'][0]);
$lieu_id=$obj['data'][0][2];
echo "<br/> lieuid $lieu_id <br/>";

avec un contains au lieu de 0  dans le search type et remplacement des espces dans le lieu par %20

la lenteur esy peut être liée au nombre d'entités


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 2018-03-30 12:05:41

bastien.prost
Member
Registered: 2016-07-22
Posts: 17

Re: Recherche des ID de lieu via l'API REST

Super merci beaucoup! L'ID est désormais le bon et la recherche est très rapide.

Offline

Board footer

Powered by FluxBB