* @license GPL v3 * @license CECILL v2 * @version $Id$ * @copyright © 2010, David Delon */ /** * Cas d'utilisation : * Service completion nom de commune * * 1 : L'application recoit un debut de nom de commune * 2 : Si la longueur du prefixe est > 2, l'application retourne les 50 premieres communes * commencant par ce prefixe **/ class LocationSearch extends Cel { function getElement($uid){ $retour = array(); if (isset($uid[0])) { $retour = $this->executerRequeteLieu($uid[0]); } $output = json_encode($retour); print($output); } function getRessource(){ print "[]"; return; } private function executerRequeteLieu($lieu) { $lieu = $this->formaterChaineLieuPourRequete($lieu); $retour = array(); if ($this->estUneChaineRequeteValide($lieu)) { $requete_information_lieu = 'SELECT DISTINCT name, code '. 'FROM locations '. 'WHERE '. 'maj_name LIKE '.$this->proteger($lieu.'%').' '. 'OR name LIKE '.$this->proteger($lieu.'%').' '. 'ORDER BY name LIMIT 50'; $liste_lieux = $this->executerRequete($requete_information_lieu); if($liste_lieux) { foreach($liste_lieux as $lieu) { $retour[] = $this->formaterLigneResultat($lieu); } } } return $retour; } private function formaterChaineLieuPourRequete($params) { $lieu = $params; $lieu=ltrim($lieu); $lieu=ereg_replace('\*+','%',$lieu); return $lieu; } private function estUneChaineRequeteValide($lieu) { return (strlen($lieu) > 0) && ($lieu != '%'); } private function formaterLigneResultat($ligne) { return array($ligne['name']." (".sprintf("%02s",$ligne['code']).")",$ligne['code']); } } /* +--Fin du code ---------------------------------------------------------------------------------------+ * $Log$ * Revision 1.4 2008-01-30 08:57:28 ddelon * fin mise en place mygwt * * Revision 1.3 2007-05-21 18:13:03 ddelon * Correction bug recherche commune du type "la canourgue" * * */ ?>