Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Автозаполнение списка городов


Recommended Posts

Создаем таблицу в БД

CREATE TABLE IF NOT EXISTS `oc_city` (
  `city_id` int(11) NOT NULL AUTO_INCREMENT,
  `zone_id` int(11) NOT NULL,
  `name` varchar(50) DEFAULT NULL,
  `free_shipping` tinyint(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`city_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

В файле catalogviewthemedefaulttemplateaccountregister.tpl после

<script type="text/javascript"><!--
добавляем

var $state = $('#zone_id'), $province = $('#city');
$state.change(function () {
if ($state.val() > 0) {
  $province.removeAttr('disabled');
} else {
  $province.attr('disabled', 'disabled').val('');
}
}).trigger('change');

$(function(){
function ShowTip(content) {
   $("#resSearch").show("slow");
   $("#resSearch").html(content);
  };
  $('#city').autocomplete({
	  source: function(request, response) {
		$.ajax({
		  url: "s.php",
		  dataType: "json",
	async: true,
		  data: {
			term : request.term,
			country : $('#zone_id').val()
		  },
		  success: function(data) {
   response(data);
		  }
		});
	  },
   select: function(value, data){
	if (data.item.free == 0) { ShowTip("Платная доставка. <a href="#">Подробнее</a>"); } else { ShowTip("Бесплатная доставка. <a href="#">Подробнее</a>"); }
			  },
	minLength: 2
  }).data('autocomplete')._renderItem = function( ul, item ) {
		return $( "<li></li>" )
			.data( "item.autocomplete", item )
			.append( '<a>' + item.label + '</a>' )
			.appendTo( ul );
  
	};
});

Так как я не смог разобраться как добавить это в controller движка, я сделал отдельный файл для выборки результатов.

Содержимое s.php в корне сайта

include ('config.php');
if ( !isset($_REQUEST['term']) )
exit;

$dblink = mysql_connect(DB_HOSTNAME,DB_USERNAME,DB_PASSWORD) or die( mysql_error() );
mysql_select_db(DB_DATABASE);
$rs = mysql_query("SELECT `name`, `free_shipping` FROM `".DB_PREFIX."city` WHERE `zone_id`= ".mysql_real_escape_string($_REQUEST['country'])." AND `name` LIKE '%".mysql_real_escape_string($_REQUEST['term']). "%' ORDER BY `name` LIMIT 5", $dblink);

$data = array();
if ( $rs && mysql_num_rows($rs) )
{
while( $row = mysql_fetch_array($rs, MYSQL_ASSOC) )
{
  $data[] = array('value' => $row['name'], 'free' => $row['free_shipping']);
}
}
else $data[] = array('value' => 'Не найдено ничего');
echo json_encode($data);
flush();

Буду благодарен кто поможет файл s.php "втулить" в файл движка ))

Прикрепляю таблицу с небольшим списком городов Украины

base_city.zip

Надіслати
Поділитися на інших сайтах


Посмотрите код моего модуля там все есть и как контролер создать и как js код добавить.. Нельзя так писать.. если есть апи то нужно использовать именно это апи! и для создания контроллеров и для подключения к базе итд. А не создать свой файл, а потом с помощью каких-то костылей пробовать его прикрутить к движку.. Это, имхо, очень не правильно.

  • +1 1
Надіслати
Поділитися на інших сайтах

Посмотрите код моего модуля там все есть и как контролер создать и как js код добавить.. Нельзя так писать.. если есть апи то нужно использовать именно это апи! и для создания контроллеров и для подключения к базе итд. А не создать свой файл, а потом с помощью каких-то костылей пробовать его прикрутить к движку.. Это, имхо, очень не правильно.

Спасибо за наводку) буду пробовать...

Надіслати
Поділитися на інших сайтах


Создаем таблицу в БД

CREATE TABLE IF NOT EXISTS `oc_city` (
  `city_id` int(11) NOT NULL AUTO_INCREMENT,
  `zone_id` int(11) NOT NULL,
  `name` varchar(50) DEFAULT NULL,
  `free_shipping` tinyint(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`city_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

В файле catalogviewthemedefaulttemplateaccountregister.tpl после

<script type="text/javascript"><!--
добавляем

var $state = $('#zone_id'), $province = $('#city');
$state.change(function () {
if ($state.val() > 0) {
  $province.removeAttr('disabled');
} else {
  $province.attr('disabled', 'disabled').val('');
}
}).trigger('change');

$(function(){
function ShowTip(content) {
   $("#resSearch").show("slow");
   $("#resSearch").html(content);
  };
  $('#city').autocomplete({
	  source: function(request, response) {
		$.ajax({
		  url: "s.php",
		  dataType: "json",
	async: true,
		  data: {
			term : request.term,
			country : $('#zone_id').val()
		  },
		  success: function(data) {
   response(data);
		  }
		});
	  },
   select: function(value, data){
	if (data.item.free == 0) { ShowTip("Платная доставка. <a href="#">Подробнее</a>"); } else { ShowTip("Бесплатная доставка. <a href="#">Подробнее</a>"); }
			  },
	minLength: 2
  }).data('autocomplete')._renderItem = function( ul, item ) {
		return $( "<li></li>" )
			.data( "item.autocomplete", item )
			.append( '<a>' + item.label + '</a>' )
			.appendTo( ul );
  
	};
});

Так как я не смог разобраться как добавить это в controller движка, я сделал отдельный файл для выборки результатов.

Содержимое s.php в корне сайта

include ('config.php');
if ( !isset($_REQUEST['term']) )
exit;

$dblink = mysql_connect(DB_HOSTNAME,DB_USERNAME,DB_PASSWORD) or die( mysql_error() );
mysql_select_db(DB_DATABASE);
$rs = mysql_query("SELECT `name`, `free_shipping` FROM `".DB_PREFIX."city` WHERE `zone_id`= ".mysql_real_escape_string($_REQUEST['country'])." AND `name` LIKE '%".mysql_real_escape_string($_REQUEST['term']). "%' ORDER BY `name` LIMIT 5", $dblink);

$data = array();
if ( $rs && mysql_num_rows($rs) )
{
while( $row = mysql_fetch_array($rs, MYSQL_ASSOC) )
{
  $data[] = array('value' => $row['name'], 'free' => $row['free_shipping']);
}
}
else $data[] = array('value' => 'Не найдено ничего');
echo json_encode($data);
flush();

Буду благодарен кто поможет файл s.php "втулить" в файл движка ))

Прикрепляю таблицу с небольшим списком городов Украины

Autocomplete это расширение к jQuery которое работает через AJAX запросы. Сам s.php может быть сервером запросов и его ни куда не нужно встраивать. Укажите его как источник данных для JS и все. Остальное найдете в описании плагина. Скорее всего придется только формат вывод подправить.

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.