модификация автозаполнения поля город
Как это сделать?
очевидно же что
по примеру выше
city на proff не поменять?
<?php include(PATH.'/core/cms.php'); $inCore = cmsCore::getInstance(); $inDB = cmsDatabase::getInstance(); $professia = $inCore->request('query', 'str'); //Идентификатор главной страны $id_main_country = 1; $sql = "SELECT id, professia, COUNT( id ) AS popule FROM cms_user_professions WHERE professia LIKE '{$professia}%' GROUP BY professia ORDER BY popule DESC , professia ASC"; $res = $inDB->query($sql); if ($inDB->num_rows($res)) { while($ress = $inDB->fetch_assoc($res)){ $suggestions[] = ($ress['popule'] > 10 ? '<b>' : '').$ress['professia']; } }
select: function (i) { var selectedValue, f; var selectedValue1, f; selectedValue = this.data[i].city; selectedValue1 = this.data[i].professia; if (selectedValue) { this.el.val(selectedValue); if (this.options.autoSubmit) { f = this.el.parents('form'); if (f.length > 0) { f.get(0).submit(); } } this.ignoreValueChange = true; this.hide(); this.onSelect(i); }
adjustScroll: function (i) { var activeItem, offsetTop, upperBound, lowerBound; activeItem = this.activate(i); offsetTop = activeItem.offsetTop; upperBound = this.container.scrollTop(); lowerBound = upperBound + this.options.maxHeight - 25; if (offsetTop < upperBound) { this.container.scrollTop(offsetTop); } else if (offsetTop > lowerBound) { this.container.scrollTop(offsetTop - this.options.maxHeight + 25); } this.el.val(this.getValue(this.data[i].city)); this.el.val(this.getValue(this.data[i].professia)); },
$city_int = cmsCore::request('city_int', 'int', 0); if(!$city_int){cmsCore::addSessionMessage('Город необходимо выбрать из вариантов!', 'error');$errors = true;} else{ $sql = "SELECT s.id_city, s.id_region, s.id_country, s.city_name_ru, r.region_name_ru, c.country_name_ru FROM cms_geo_cities s LEFT JOIN cms_geo_countries c ON s.id_country = c.id_country LEFT JOIN cms_geo_regions r ON s.id_region = r.id_region WHERE s.id_city={$city_int}"; $geo = $inDB->query($sql); if($inDB->num_rows($geo)){ $geo = $inDB->fetch_assoc($geo); $city= $geo['city_name_ru']; $geo = cmsCore::arrayToYaml($geo); }else{cmsCore::addSessionMessage('Город необходимо выбрать из вариантов!', 'error');$errors = true;} }
//Автозаполнение поля профессия $item['professia_int'] = cmsCore::request('professia_int', 'int', 0); $item['professia'] = cmsCore::request('professia', 'str', ''); if(!$item['city_int']){cmsCore::addSessionMessage('Профессию необходимо выбрать из вариантов!', 'error');$errors = true;} else{ $sql = "SELECT id, professia FROM cms_user_profession WHERE id={$item['professia_int']}"; $professia = $inDB->query($sql); if($inDB->num_rows($professia)){ $professia = $inDB->fetch_assoc($professia); $item['professia'] = $professia['professia']; $item['geo'] = cmsCore::arrayToYaml($city); }else{cmsCore::addSessionMessage('Профессию необходимо выбрать из вариантов!', 'error');$errors = true;} }
$professia = $inDB->fetch_assoc($professia);
$item['professia'] = $professia['professia'];
$item['geo'] = cmsCore::arrayToYaml($city);
вы отправляете массив в переменную сити
и причем тут гео?
$item['professia_int'] = cmsCore::request('professia_int', 'int', 0); $item['professia'] = cmsCore::request('professia', 'str', ''); if(!$item['professia_int']){cmsCore::addSessionMessage('Профессию необходимо выбрать из вариантов!', 'error');$errors = true;} else{ $sql = "SELECT id, professia FROM cms_user_profession WHERE id={$item['professia_int']}"; $professia = $inDB->query($sql); if($inDB->num_rows($professia)){ $professia = $inDB->fetch_assoc($professia); $item['professia'] = $professia['professia']; $item['professia'] = cmsCore::arrayToYaml($professia); }else{cmsCore::addSessionMessage('Профессию необходимо выбрать из вариантов!', 'error');$errors = true;} }
$city_int = cmsCore::request('city_int', 'int', 0); if(!$city_int){cmsCore::addSessionMessage('Город необходимо выбрать из вариантов!', 'error');$errors = true;} else{ $sql = "SELECT s.id_city, s.id_region, s.id_country, s.city_name_ru, r.region_name_ru, c.country_name_ru FROM cms_geo_cities s LEFT JOIN cms_geo_countries c ON s.id_country = c.id_country LEFT JOIN cms_geo_regions r ON s.id_region = r.id_region WHERE s.id_city={$city_int}"; $geo = $inDB->query($sql); if($inDB->num_rows($geo)){ $geo = $inDB->fetch_assoc($geo); $city= $geo['city_name_ru']; $geo = cmsCore::arrayToYaml($geo); }else{cmsCore::addSessionMessage('Город необходимо выбрать из вариантов!', 'error');$errors = true;} }
$geo = cmsCore::arrayToYaml($geo);
$geo = cmsCore::arrayToYaml($geo);
а зачем вам arrayToYaml? у вас же профессия = одно слово в поле. или можно выбирать несколько профессий?
посмотрите лучше в сторону штатного jquery.autocomplete.min.js в инстанте.
Как работает можно увидеть в USERS, поиск по полю Город.
В том решении автокомплита который вы начали переделывать для вашего варианта, много лишнего.