Здравствуйте. Нужен скрипт выбора городов в лайтбокс-окне, по ajax. Примерно как на мамбе. Нигде не попадался?
в mysql лучше наверное. собственно, списки городов я нашёл и в модальное окно загнал. теперь вопрос- как сохранить цепочку выбранного в базу..
сообщение без ответа осталось(( и еще вопрос по этому же скрипту, но в другом проекте- там без городов. только страны и регионы. ajax подключен, есть базы region и country. у всех перекрестные id. при выборе страны сбрасывает на первую позицию. в чем причина?((
формат базы country: назв. полей: id, country (пример данных: 7, Россия) формат базы region: назв. полей: id, country,region (пример данных: 77,7,Москва) поля: <select name=country onchange=getList('country','region')></select> <select name=region onchange=getList('region','region')></select> (* скрипт и библиотека jq подключены в HEAD, и в onload по умолчанию прописана функция getList('country'), чтобы по умолчанию список загружал) скрипт ajax.js: Код (Text): function getList(type, obj) { $.post('city.php', {type: type, ids: $('#'+obj).val()}, onAjaxSuccess); function onAjaxSuccess(data) { out = document.getElementById(type); for (var i = out.length - 1; i >= 0; i--) { out.options[i] = null; } eval(data); } } скрипт city.php Код (Text): $id = (int)$_POST['ids']; // id объекта (страна или регион) $type = $_POST['type']; // тип списка, который нужно получить (города или регионы) if ($type == 'region') { // выбираем регионы в данной стране $res = mysql_query('SELECT * FROM region'); if (!empty($res)) { echo "out.options[out.options.length] = new Option('Регион','none');\n"; while ($region = mysql_fetch_array($res)) { echo "out.options[out.options.length] = new Option('".$region['region']."','".$region['country']."');\n"; } } else { echo "out.options[out.options.length] = new Option('нет регионов','none');\n"; } } if ($type == 'country') { // выбираем регионы в данной стране $res = mysql_query('SELECT * FROM country'); if (!empty($res)) { echo "out.options[out.options.length] = new Option('Страна','none');\n"; while ($country = mysql_fetch_array($res)) { echo "out.options[out.options.length] = new Option('".$country['country']."','".$country['id']."');\n"; } } else { echo "out.options[out.options.length] = new Option('нет стран','none');\n"; } }
Код (Text): out = document.getElementById(type); проверьте присутствие id думаю надо так Код (Text): <select name="country" id="country" onchange=getList('country','region')></select> <select name="region" id="region" onchange=getList('region','region')></select>
короче тут везде говнокод я не ощущаю WHERE сбрасывает на первую потому что он обновляется чего не должен делать, потому логично что onchange левый Код (Text): <select name="country" id="country" onchange=getList('region','country')></select> <select name="region" id="region" onchange=getList('city','region')></select> <select name="city" id="city"></select> поменял onchange и запрос должен быть таким видимо Код (Text): if ($type == 'region') { // выбираем регионы в данной стране $res = mysql_query('SELECT * FROM region WHERE `country`='.$id);
Код (Text): sleep(1); // спешить нам некуда ахуеть ну ладно, оправдались =D короче, трабл в том что первый список обновляется, а всё остальное ок ?
нет, должен по умолчанию быть загружен список со странами. в зависимости от выбранной страны должен загружаться список регионов во втором списке