Взаимосвязанные селекты

Dima_A

Новичок
Взаимосвязанные селекты

Хочу создать на аяксе взаимоствязанные селекты используя библиотеку xajax:
Селект Страны. Выводится 10стран
При выборе страны во второй селект загружаются регионы страны. При выборе региона в 3-й селект загружаются
города
Вся информация лежит в таблице regions

Подскажите алгоритм реализации такой задачи

-~{}~ 12.01.08 16:38:

И еще:
что-то не могу найти документацию по xajax на русском. Может у кого уже есть?
 

Dima_A

Новичок
так используя же xajax мы весь код пишем на пхп а он потом колбасится в яваскрипт. Насколько я понял, читая о этой библиотеке. А мне выдаст только яваскрипт..
 

AmdY

Пью пиво
Команда форума
Dima_A смени подход, а то это очень неудобный и нефункциональный вариант иначе ты надолго засядешь в этой теме, когда понадобится что-нить неординарное
 

Dima_A

Новичок
Dima_A смени подход, а то это очень неудобный и нефункциональный вариант иначе ты надолго засядешь в этой теме, когда
понадобится что-нить неординарное
В смысле? Ты о xajax?

-~{}~ 12.01.08 17:55:

Я нашел в интернете пример который мне надо. Разбирая код возникли вопросы:

PHP:
<select id="country" name="country" onChange="handleListChange(this.id);">
{get_country id=1 level="country"}
</select> 

# в файле js

function handleListChange(list_id) {
xajax_get_data(list, value, 'country')
}

# файл ajax.php
function get_data($id, $value, $flag = ""){
global $smarty;

$Response = new xajaxResponse();
$Response->setCharEncoding('windows-1251');
$Response->addAssign("country", "innerHTML", get_options(1, "full"))  //Выодит все страны
}

$xajax->processRequests();
$smarty->assign("xjavascript", $xajax->getJavascript(URL));
СДесь я проследил всю цепочку, но что-то не вижу откуда берутся данные в селект. Где запрос к базе и т.д.
 

maxwell

artifex
Dima_A, имхо лучше при генерации страницы сразу сделать JS массив где будут хранится значения городов/регионов/стран.

Зачем при каждом выборе совокуплять сервер?
 

Dima_A

Новичок
Да у меня больше 100стран, соответственно регинов в районе 4000тысяч и городов тыся 50

Что значит например вот эта строчка
PHP:
$Response->addAssign("country", "innerHTML", get_options(1, "full"))
 

Фанат

oncle terrible
Команда форума
Dima_A
смотри, что делают упомянутые в коде функции

-~{}~ 12.01.08 18:20:

что значит эта строчка, написано в коде приложения
 

Dima_A

Новичок
PHP:
setCharEncoding  - # устанавливаем кодировку

function addAssign($sTarget,$sAttribute,$sData)
	{
		$this->addCommand(array('n'=>'as','t'=>$sTarget,'p'=>$sAttribute),$sData);
		return $this;
	}
function addCommand($aAttributes, $mData)
	{
		$aAttributes['data'] = $mData;
		$this->aCommands[] = $aAttributes;
	}
#Вотэти 2 функции я что-то не понимаю. Я так понял формируют ассоциативный массив. Или как?

processRequests(); #- возвращает запрос
$smarty->assign("xjavascript", $xajax->getJavascript(URL));
#Вставляем в шаблон наш селект
Ну а где же запрос на выборку данных (стран)
 

Фанат

oncle terrible
Команда форума
ну что тебя - везде носом тыкать?
а сам ты не видишь функцию get_options?
 

WP

^_^
Это же банально.
"Классическая" реализация - грузишь combo для стран, затем при выборе страны грузишь города для этой страны.
Правильная реализация на мой взгляд - сделать один combo с записями вида "Населенный пункт, Страна", например "Husinec, Czech Republic".
По дефолту введен населенный пункт на основе geoip. Далее человек начинает вводить населенный пункт и ему всплывают варианты, далее кликает по нужному и всё. В этом случае с сервера придется подгружать только 10 элементов.
Дим, попробуй на досуге включить моск :)
 

RoLex

Новичок
Re: Взаимосвязанные селекты

Автор оригинала: Dima_A
Хочу создать на аяксе взаимоствязанные селекты используя библиотеку xajax:
Селект Страны. Выводится 10стран
При выборе страны во второй селект загружаются регионы страны. При выборе региона в 3-й селект загружаются
города
Вся информация лежит в таблице regions

Подскажите алгоритм реализации такой задачи

-~{}~ 12.01.08 16:38:

И еще:
что-то не могу найти документацию по xajax на русском. Может у кого уже есть?
http://phpclub.ru/talk/showthread.php?postid=771533#post771533

описал там простенький пример подстановкой в селект результаты запроса....
тебе на селект со списком стран надо повесить событие onChange="xajax_getRegion(this.value);"
<select>
<option value="">Выбрать страну</option>
<option value="1">Россия</option>
</select>
твоя php функция getRegion($value) - по указанному id страны берет регионы из БД и в том примере, см ссылку, подставляет результаты в селект.
и так далее.

селекту можешь по умолчанию прописать св-во disabled="disabled", чтобы пользователь не смог выбрать что-то, пока не будет выбрана, например, страна...
и так далее...
 
Сверху