Javascript-форум (https://javascript.ru/forum/)
-   Работа (https://javascript.ru/forum/job/)
-   -   Доработка JQuery Autocomplete (https://javascript.ru/forum/job/34595-dorabotka-jquery-autocomplete.html)

troi88 11.01.2013 13:05

Доработка JQuery Autocomplete
 
Возникла такая проблема и решил обратиться к Вам как к специалистам, хорошо разбирающимся в данной области. Суть вот в чем. Вот есть пример реализации автозаполнения поля город http://www.instantcms.ru/blogs/lunyi...-profilja.html.
Я его прикрутил на странице регистрации. Все отлично работает. Нужно сделать на основе этого варианта, чтобы поле профессия работало по такому же прицепу? Т.е. на странице регистрации имеются несколько полей, из них поле "город" и поле "профессия" должны обладать функцией автозаполнения по примеру выше. Списки городов и профессий хранятся в базе данных в таблице proff. Нужно переделать файл php, делающий запрос к базе данных и возвращающий ответ. Вот обработчик поля город:

<?php
define('PATH', dirname(__FILE__));
define("VALID_CMS", 1);

include(PATH.'/core/cms.php');

$inCore = cmsCore::getInstance();
$inDB = cmsDatabase::getInstance();

$city = $inCore->request('query', 'str');
if(!$city)exit;

//Идентификатор главной страны
$id_main_country = 1;

$sql = "SELECT s.id_city, s.id_region, s.id_country, s.city_name_ru, r.region_name_ru, c.country_name_ru, COUNT( p.id ) AS popule
FROM cms_geo_cities s
LEFT JOIN cms_user_profiles p ON s.city_name_ru = p.city
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 city_name_ru LIKE '{$city}%'
GROUP BY s.city_name_ru
ORDER BY popule DESC , s.city_name_ru ASC";
$res = $inDB->query($sql);
if ($inDB->num_rows($res)) {
while($ress = $inDB->fetch_assoc($res)){
$suggestions[] = ($ress['popule'] > 10 ? '<b>' : '').$ress['city_name_ru'].($ress['popule'] > 10 ? '</b>' : '').' <i> \ '.$ress['region_name_ru'].($ress['id_country']==$id_main_country ? '' : '<span> \ '.$ress['country_name_ru'].'</span>').'</i>';
$data[] = array('city' => $ress['city_name_ru'], 'id_city' => $ress['id_city'], 'id_region' => $ress['id_region'], 'id_country' => $ress['id_country']);
}
}
cmsCore::jsonOutput(array('query' => $city, 'suggestions' => $suggestions, 'data' => $data));

А как сделать обработчик поля профессия?

DjDiablo 11.01.2013 21:23

если я правильно всё понял, то в твоём примере из сложностей только обработчик города который формирует сложный SQL запрос.

с профессией всё проще, ведь профессия к региону непривязана достаточно просто достать инфу из бд по LIKE

значит на клиенте нам понадобится как минимум.
$( "#profession" ).autocomplete({
      source: "searchprof.php",
      minLength: 2,
      select: function( event, ui ) {
            //какоето действие
      }
    });


и в searchprof запрос вида (как конкретно это от таблицы зависит)
$sql="SELECT * FROM cms_proffesion WHERE name LIKE '{$prof}%' ORDER BY name ASC";

ничего сложного, ты ценник назови мож кто сделает :)
тут больше PHP чем javascript'а

troi88 11.01.2013 22:16

Цитата:

Сообщение от DjDiablo (Сообщение 226730)
ничего сложного, ты ценник назови мож кто сделает :)
тут больше PHP чем javascript'а

А вы сколько попросите?

DjDiablo 11.01.2013 23:37

мне старик своего гемороя пока хватает, извини))
смотайся на PHP форум, там быстро сделают.


Часовой пояс GMT +3, время: 18:12.