You are not logged in.
Pages: 1
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
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.16 (ubuntu 22.04 PHP8.1 Mariadb10.6 ) plugins : comportements 2.7.3 reports 1.16.0 formcreator 2.13.9, datainjection 2.13.5 fields 1.21.9
Offline
Super merci beaucoup! L'ID est désormais le bon et la recherche est très rapide.
Offline
Pages: 1