Артем

Артем

+24
Репутация
0
Рейтинг
#1 Автоподбор поля 17 января 2013 в 16:42
Тоже не работает
#2 Автоподбор поля 17 января 2013 в 10:58
Ошибся выше. Вставляю вот это:
  1. //Автозаполнение поля профессия
  2. $item['professia_int'] = cmsCore::request('professia_int', 'int', 0);
  3. $item['professia'] = cmsCore::request('professia', 'str', '');
  4. if(!$item['city_int']){cmsCore::addSessionMessage('Профессию необходимо выбрать из вариантов!', 'error');$errors = true;}
  5. else{
  6. $sql = "SELECT id, professia
  7. FROM cms_user_profession
  8. WHERE id={$item['professia_int']}";
  9. $professia = $inDB->query($sql);
  10. if($inDB->num_rows($professia)){
  11. $professia = $inDB->fetch_assoc($professia);
  12. $item['professia'] = $professia['professia'];
  13. $item['geo'] = cmsCore::arrayToYaml($city);
  14. }else{cmsCore::addSessionMessage('Профессию необходимо выбрать из вариантов!', 'error');$errors = true;}
  15. }
не сохраняются изменения и выпадает ошибка: Профессию необходимо выбрать из вариантов!
#3 Автоподбор поля 17 января 2013 в 09:47
Изменил запрос на этот:
  1. <?php
  2.  
  3. define('PATH', dirname(__FILE__));
  4. define("VALID_CMS", 1);
  5.  
  6. include(PATH.'/core/cms.php');
  7.  
  8. $inCore = cmsCore::getInstance();
  9. $inDB = cmsDatabase::getInstance();
  10.  
  11. $professia = $inCore->request('query', 'str');
  12. if(!$professia)exit;
  13.  
  14. //Идентификатор главной страны
  15. $id_main_country = 1;
  16.  
  17. $sql = "SELECT id, professia, COUNT( id ) AS popule
  18. FROM cms_user_professions
  19. WHERE professia LIKE '{$professia}%'
  20. GROUP BY professia
  21. ORDER BY popule DESC , professia ASC";
  22. $res = $inDB->query($sql);
  23. if ($inDB->num_rows($res)) {
  24. while($ress = $inDB->fetch_assoc($res)){
  25. $suggestions[] = ($ress['popule'] > 10 ? '<b>' : '').$ress['professia'];
  26. $data[] = array('professia' => $ress['professia']);
  27. }
  28. }
  29. cmsCore::jsonOutput(array('query' => $professia, 'suggestions' => $suggestions, 'data' => $data));
  30.  
и в файле autocomplete.js добавил такие строки:
  1. select: function (i) {
  2. var selectedValue, f;
  3. var selectedValue1, f;
  4.  
  5. selectedValue = this.data[i].city;
  6. selectedValue1 = this.data[i].professia;
  7.  
  8. if (selectedValue) {
  9. this.el.val(selectedValue);
  10. if (this.options.autoSubmit) {
  11. f = this.el.parents('form');
  12. if (f.length > 0) {
  13. f.get(0).submit();
  14. }
  15. }
  16. this.ignoreValueChange = true;
  17. this.hide();
  18. this.onSelect(i);
  19. }
и вот тут:

  1. adjustScroll: function (i) {
  2. var activeItem, offsetTop, upperBound, lowerBound;
  3.  
  4. activeItem = this.activate(i);
  5. offsetTop = activeItem.offsetTop;
  6. upperBound = this.container.scrollTop();
  7. lowerBound = upperBound + this.options.maxHeight - 25;
  8.  
  9. if (offsetTop < upperBound) {
  10. this.container.scrollTop(offsetTop);
  11. } else if (offsetTop > lowerBound) {
  12. this.container.scrollTop(offsetTop - this.options.maxHeight + 25);
  13. }
  14.  
  15. this.el.val(this.getValue(this.data[i].city));
  16. this.el.val(this.getValue(this.data[i].professia));
  17. },
работает все отлично! Но возникли проблемы с добавлением автозаполнения поля в профиле. В файле /components/users/frontend.php вставляю
  1. $city_int = cmsCore::request('city_int', 'int', 0);
  2. if(!$city_int){cmsCore::addSessionMessage('Город необходимо выбрать из вариантов!', 'error');$errors = true;}
  3. else{
  4. $sql = "SELECT s.id_city, s.id_region, s.id_country, s.city_name_ru, r.region_name_ru, c.country_name_ru
  5. FROM cms_geo_cities s
  6. LEFT JOIN cms_geo_countries c ON s.id_country = c.id_country
  7. LEFT JOIN cms_geo_regions r ON s.id_region = r.id_region
  8. WHERE s.id_city={$city_int}";
  9. $geo = $inDB->query($sql);
  10. if($inDB->num_rows($geo)){
  11. $geo = $inDB->fetch_assoc($geo);
  12. $city= $geo['city_name_ru'];
  13. $geo = cmsCore::arrayToYaml($geo);
  14. }else{cmsCore::addSessionMessage('Город необходимо выбрать из вариантов!', 'error');$errors = true;}
  15. }
не сохраняются изменения и выпадает ошибка: Выберите профессию из списка.
#4 Автоподбор поля 16 января 2013 в 21:43
Пробовал, не работает! Я так понимаю, нужно править обработчик PHP, который делает выборку по базе и возвращает ответ в javascript. Как правильно его составить?
#1 Автоподбор поля 16 января 2013 в 16:23
Доброго времени! Тут: ПРИМЕР реализовано автозаполнение поля город. Нужно сделать тоже самое для поля профессия. т.е на странице регистрации будут несколько полей, из них поля город и профессия должны обладать автозаполнением по примеру выше. Как это сделать?
#1 Модификация запроса 13 января 2013 в 11:54
Доброго времени! Добавил на своем сайте поле с авто-подбором поля город по этому примеру:
instantcms.ru/blogs/lunyi-blog/ajaks-podbor-goroda-profilja.htmlhttp://instantcms.ru/blogs/lunyi...-profilja.html
Встала задача добавить еще одно поле — "профессия". Создал в базе данных таблицу cms_users_profession с полями id_proff и user_proff. Теперь нужно модифицировать обработчик php:

  1. <?php
  2.  
  3. define('PATH', dirname(__FILE__));
  4. define("VALID_CMS", 1);
  5.  
  6. include(PATH.'/core/cms.php');
  7.  
  8. $inCore = cmsCore::getInstance();
  9. $inDB = cmsDatabase::getInstance();
  10.  
  11. $city = $inCore->request('query', 'str');
  12. if(!$city)exit;
  13.  
  14. //Идентификатор главной страны
  15. $id_main_country = 1;
  16.  
  17. $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
  18. FROM cms_geo_cities s
  19. LEFT JOIN cms_user_profiles p ON s.city_name_ru = p.city
  20. LEFT JOIN cms_geo_countries c ON s.id_country = c.id_country
  21. LEFT JOIN cms_geo_regions r ON s.id_region = r.id_region
  22. WHERE city_name_ru LIKE '{$city}%'
  23. GROUP BY s.city_name_ru
  24. ORDER BY popule DESC , s.city_name_ru ASC";
  25. $res = $inDB->query($sql);
  26. if ($inDB->num_rows($res)) {
  27. while($ress = $inDB->fetch_assoc($res)){
  28. $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>';
  29. $data[] = array('city' => $ress['city_name_ru'], 'id_city' => $ress['id_city'], 'id_region' => $ress['id_region'], 'id_country' => $ress['id_country']);
  30. }
  31. }
  32. cmsCore::jsonOutput(array('query' => $city, 'suggestions' => $suggestions, 'data' => $data));
который делает запрос к базе и возвращает ответ. Поле ввода профессии имеет id="proff". Помогите разобраться!
#5 Автоподбор поля 13 января 2013 в 11:36
Я понял, что нужно изменить вот это:
  1. <?php
  2.  
  3. define('PATH', dirname(__FILE__));
  4. define("VALID_CMS", 1);
  5.  
  6. include(PATH.'/core/cms.php');
  7.  
  8. $inCore = cmsCore::getInstance();
  9. $inDB = cmsDatabase::getInstance();
  10.  
  11. $city = $inCore->request('query', 'str');
  12. if(!$city)exit;
  13.  
  14. //Идентификатор главной страны
  15. $id_main_country = 1;
  16.  
  17. $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
  18. FROM cms_geo_cities s
  19. LEFT JOIN cms_user_profiles p ON s.city_name_ru = p.city
  20. LEFT JOIN cms_geo_countries c ON s.id_country = c.id_country
  21. LEFT JOIN cms_geo_regions r ON s.id_region = r.id_region
  22. WHERE city_name_ru LIKE '{$city}%'
  23. GROUP BY s.city_name_ru
  24. ORDER BY popule DESC , s.city_name_ru ASC";
  25. $res = $inDB->query($sql);
  26. if ($inDB->num_rows($res)) {
  27. while($ress = $inDB->fetch_assoc($res)){
  28. $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>';
  29. $data[] = array('city' => $ress['city_name_ru'], 'id_city' => $ress['id_city'], 'id_region' => $ress['id_region'], 'id_country' => $ress['id_country']);
  30. }
  31. }
  32. cmsCore::jsonOutput(array('query' => $city, 'suggestions' => $suggestions, 'data' => $data));
под свою таблицу. Но как правильно это сделать? Я пробовал убрать лишние поля для выборки — не работает!
Подскажите пожалуйста!
#1 Автоподбор поля 11 января 2013 в 17:44
Добавил на страницу регистрации поле город по этому примеру: instantcms.ru/blogs/lunyi-blog/ajaks-podbor-goroda-profilja.html Как реализовать такой же функционал у поля профессия? Создал в базе данных таблицу cms_users_professia с полями id и professia. Как изменить файл cities.php для выборки по базе и возврата результата?
Прикрепленный файл
cityselect_b6nek.zip 277 Кб
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.