06.02.2013, 10:53
|
Интересующийся
|
|
Регистрация: 06.02.2013
Сообщений: 19
|
|
Как связать два списка на Javascript?
Здравствуйте уважаемые форумчане. Меня интересует как можно связать два списка (select и их option) из базы данных на Javascript?
---------------
Вот приблизительные данные в БД с именем bd_primer:
Первая таблица country
1. ID (1, 2, 3, ...) INT
2. name (Россия, Украина, Эстония, ...) VARCHAR
3. url (rossia, shvecia, polsha, ....) VARCHAR
Вторая таблица city
1. ID (1, 2, 3, 4, 5, 6, ...) INT
2. id_country (1, 1, 2, 2, 3, 3, ...) INT
3. name (Санкт-Петербург, Москва, Киев, Харьков,Таллин, Нарва, ...) VARCHAR
4. url (spb, moscow, kiev, kharkov, tallinn, narva, ....) VARCHAR
---------------
В файл test.php помещаем select (ы):
$id_city = "ID взятый из таблицы country"
$name_country = "Имя взятое из таблицы country"
$id_country = "ID взятый из таблицы city"
$name_city = "Имя взятое из таблицы city"
<select name="country">
<option value="id_country">name_country</option>
<option value="id_country">name_country</option>
<option value="id_country">name_country</option>
<select>
<select name="city">
<option value="id_city">name_city</option>
<option value="id_city">name_city</option>
<option value="id_city">name_city</option>
<select>
Задача следующая, нужно написать функцию на javascript, которая свяжет select country с select city и отобразить ее в трех файлах, т.е. функцию сохраняем в файле select2.js, подключаем эту функцию в файле header.php, а вывод результата показываем в файле test.php
Скрипт должен быть быстрым и легким, выводить кучу selectov не лучший вариант.
К сожалению я не нашел нужные примеры в интернете, и был вынужден обратиться напрямую к форумчанам. Были похожие примеры, но с более сложными и углубленными задачами, но меня интересует именно этот конкретный случай.
П.с.: за самый шустрый, безопасный и красивый скрипт, выполненный в соответствии с заданием, подарю 200 руб. на Webmoney. Естественно, если он у меня заработает
Последний раз редактировалось Aggao, 06.02.2013 в 11:04.
|
|
06.02.2013, 11:12
|
|
Профессор
|
|
Регистрация: 17.01.2013
Сообщений: 887
|
|
Сообщение от Aggao
|
подарю 200 руб
|
щедрость то какая, помог бы, но мыслей читать пока не умею
Сообщение от Aggao
|
свяжет select country с select city и отобразить ее в трех файлах, т.е. функцию сохраняем в файле select2.js, подключаем эту функцию в файле header.php, а вывод результата показываем в файле test.php
|
может я туплю поутру но по моему это набор безсвязных фраз
|
|
06.02.2013, 11:46
|
Интересующийся
|
|
Регистрация: 06.02.2013
Сообщений: 19
|
|
Сообщение от animhotep
|
щедрость то какая, помог бы, но мыслей читать пока не умею
может я туплю поутру но по моему это набор бессвязных фраз
|
Что конкретно Вам было не понятно из того, что я написал? Я могу изложить свои бессвязные мысли в другой форме.
|
|
06.02.2013, 12:51
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,105
|
|
Вариант ... если у кого будет желание может распихать по файлам
<!DOCTYPE HTML>
<html>
<head>
<title></title>
<meta charset="windows-1251" />
<script>
window.onload = function () {
var country = {
'ID': [1, 2, 3],
'name': ['Россия', 'Украина', 'Эстония'],
'url': ['rossia', 'shvecia', 'polsha']
},
city = {
'ID': [1, 2, 3, 4, 5, 6],
'id_country': [1, 1, 2, 2, 3, 3],
'name': ['Санкт-Петербург', 'Москва', 'Киев', 'Харьков', 'Таллин', 'Нарва'],
'url': ['spb', 'moscow', 'kiev', 'kharkov', 'tallinn', 'narva']
}
function set_select(name, arr_text, arr_val) {
var select = document.getElementsByName(name)[0];
select.options.length = 0;
for (var k = 0; k < arr_val.length; k++) {
select.options[k] = new Option(arr_text[k], arr_val[k]);
}
}
var select = document.getElementsByName('country')[0];
function change_select() {
var j = select.selectedIndex || 0,
name = [],
url = [];
j = country['ID'][j]
for (var i = 0; i < city['id_country'].length; i++) {
if (city['id_country'][i] == j) {
name.push(city['name'][i]);
url.push(city['url'][i]);
}
}
set_select('city', name, url)
}
set_select('country', country['name'], country['url'])
change_select()
select.addEventListener('change', change_select);
}
</script>
</head>
<body>
<select name="country">
</select>
<select name="city">
</select>
</body>
</html>
Последний раз редактировалось рони, 07.02.2013 в 13:07.
|
|
06.02.2013, 14:43
|
Интересующийся
|
|
Регистрация: 06.02.2013
Сообщений: 19
|
|
Сообщение от рони
|
var country = {
'ID': [1, 2, 3],
'name': ['Россия', 'Украина', 'Эстония'],
'url': ['rossia', 'shvecia', 'polsha']
},
city = {
'ID': [1, 2, 3, 4, 5, 6],
'id_country': [1, 1, 2, 2, 3, 3],
'name': ['Санкт-Петербург', 'Москва', 'Киев', 'Харьков', 'Таллин', 'Нарва'],
'url': ['spb', 'moscow', 'kiev', 'kharkov', 'tallinn', 'narva']
}
|
Спасибо, все работает. Единственное, мне не понятно, как я могу заменить в этих таблицах рукописные данные, на данные из БД? У меня все это в таблицах Базы Данных находится, мне надо их как-то через переменные отобразить в скрипте. Сможете написать как это сделать?
Последний раз редактировалось Aggao, 07.02.2013 в 12:49.
|
|
07.02.2013, 12:48
|
Интересующийся
|
|
Регистрация: 06.02.2013
Сообщений: 19
|
|
'id_country': [1, 1, 2, 2, 3, 3]
Только что пытался связать вывод данных с базы и столкнулся с ошибкой. У Вас вывод id_country идет по порядку 1, 1, 2, 2, 3, 3 и т.д., а нужно реализовать вывод разных цифр, таких как например: 1, 1, 4, 5, 6, 6 и т.д.
Суть в том, что id_country = ID (в таблице country), т.е. две таблицы в базе данных связаны между собой этим (ID) идентификатором.
Сможете помочь с этим вопросом?
|
|
07.02.2013, 13:07
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,105
|
|
Сообщение от Aggao
|
1, 1, 2, 2, 3, 3 и т.д., а нужно реализовать вывод разных цифр, таких как например: 1, 1, 4, 5, 6, 6 и т.д.
|
порядок здесь никак не влияет на выборку
вы наверно спутали city и country
|
|
07.02.2013, 13:11
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,105
|
|
Aggao,
city = {
07 'ID': [1, 2, 3, 4, 5, 6],
это id я совсем неиспользую и непонимаю зачем оно нужно.
выше в коде кое что поправил - смотрите код по новой и
если несработает то что вам нужно -- нерабочий код разместите тут
Последний раз редактировалось рони, 07.02.2013 в 13:13.
|
|
07.02.2013, 15:59
|
Интересующийся
|
|
Регистрация: 06.02.2013
Сообщений: 19
|
|
Сообщение от рони
|
Aggao,
city = {
07 'ID': [1, 2, 3, 4, 5, 6],
это id я совсем неиспользую и непонимаю зачем оно нужно.
выше в коде кое что поправил - смотрите код по новой и
если несработает то что вам нужно -- нерабочий код разместите тут
|
Спасибо, все работает. Этот id и url вообще не нужны при выводе двух списков, просто сделал, чтобы если пригодиться они были учтены. Спасибо большое. Скажите свой WMR кошелек.
|
|
|
|