Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.02.2013, 10:53
Интересующийся
Отправить личное сообщение для Aggao Посмотреть профиль Найти все сообщения от Aggao
 
Регистрация: 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.
Ответить с цитированием
  #2 (permalink)  
Старый 06.02.2013, 11:12
Аватар для animhotep
Профессор
Отправить личное сообщение для animhotep Посмотреть профиль Найти все сообщения от animhotep
 
Регистрация: 17.01.2013
Сообщений: 887

Сообщение от Aggao
подарю 200 руб
щедрость то какая, помог бы, но мыслей читать пока не умею

Сообщение от Aggao
свяжет select country с select city и отобразить ее в трех файлах, т.е. функцию сохраняем в файле select2.js, подключаем эту функцию в файле header.php, а вывод результата показываем в файле test.php
может я туплю поутру но по моему это набор безсвязных фраз
Ответить с цитированием
  #3 (permalink)  
Старый 06.02.2013, 11:46
Интересующийся
Отправить личное сообщение для Aggao Посмотреть профиль Найти все сообщения от Aggao
 
Регистрация: 06.02.2013
Сообщений: 19

Сообщение от animhotep Посмотреть сообщение
щедрость то какая, помог бы, но мыслей читать пока не умею

может я туплю поутру но по моему это набор бессвязных фраз

Что конкретно Вам было не понятно из того, что я написал? Я могу изложить свои бессвязные мысли в другой форме.
Ответить с цитированием
  #4 (permalink)  
Старый 06.02.2013, 12:51
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Вариант ... если у кого будет желание может распихать по файлам
<!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.
Ответить с цитированием
  #5 (permalink)  
Старый 06.02.2013, 14:43
Интересующийся
Отправить личное сообщение для Aggao Посмотреть профиль Найти все сообщения от Aggao
 
Регистрация: 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.
Ответить с цитированием
  #6 (permalink)  
Старый 07.02.2013, 12:48
Интересующийся
Отправить личное сообщение для Aggao Посмотреть профиль Найти все сообщения от Aggao
 
Регистрация: 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) идентификатором.

Сможете помочь с этим вопросом?
Ответить с цитированием
  #7 (permalink)  
Старый 07.02.2013, 13:07
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Сообщение от Aggao
1, 1, 2, 2, 3, 3 и т.д., а нужно реализовать вывод разных цифр, таких как например: 1, 1, 4, 5, 6, 6 и т.д.
порядок здесь никак не влияет на выборку
вы наверно спутали city и country
Ответить с цитированием
  #8 (permalink)  
Старый 07.02.2013, 13:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Aggao,

city = {


07 'ID': [1, 2, 3, 4, 5, 6],
это id я совсем неиспользую и непонимаю зачем оно нужно.
выше в коде кое что поправил - смотрите код по новой и
если несработает то что вам нужно -- нерабочий код разместите тут

Последний раз редактировалось рони, 07.02.2013 в 13:13.
Ответить с цитированием
  #9 (permalink)  
Старый 07.02.2013, 15:59
Интересующийся
Отправить личное сообщение для Aggao Посмотреть профиль Найти все сообщения от Aggao
 
Регистрация: 06.02.2013
Сообщений: 19

Сообщение от рони Посмотреть сообщение
Aggao,

city = {


07 'ID': [1, 2, 3, 4, 5, 6],
это id я совсем неиспользую и непонимаю зачем оно нужно.
выше в коде кое что поправил - смотрите код по новой и
если несработает то что вам нужно -- нерабочий код разместите тут
Спасибо, все работает. Этот id и url вообще не нужны при выводе двух списков, просто сделал, чтобы если пригодиться они были учтены. Спасибо большое. Скажите свой WMR кошелек.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно удалить из шаблона, javascript код? QroxZ Общие вопросы Javascript 0 04.11.2011 17:59
Как узнать подключен ли JavaScript у пользователя? frost18 Элементы интерфейса 1 26.10.2011 17:16
Как на JavaScript подгрузить JavaScript? Pug-dog&Elephant Opera, Safari и др. 2 18.09.2011 15:43
Как вывести ошибку в javascript? MCTrane Общие вопросы Javascript 13 05.05.2010 08:36
Как заменить эл-ты одного списка эл-тами другого ? Mayar Элементы интерфейса 5 28.04.2009 11:21