Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.08.2011, 00:27
Новичок на форуме
Отправить личное сообщение для bma2004 Посмотреть профиль Найти все сообщения от bma2004
 
Регистрация: 03.08.2011
Сообщений: 3

JS, <SELECT> заполнение
Доброго времени суток!

Пытаюсь создать на своём сайте динамический список.

на странице два поля select. первое заполняется изначально, а второе в зависимости от выбора в первом (для нескольких значений).

Вопрос: как сделать заполнение второго select'а используя данные PHP (из БД MySQL).

пробовал сделать как тут:
http://www.tigir.com/javascript_select.htm

но опятьже не знаю, как сделать заполнение селекта

если в первом select значение value - c1, то используя первое число массива полученного в PHP через

while ($cat_row = mysql_fetch_array($res1)) 
{ 
$i++;
$arr1[$i] = array($cat_row['cat_id'], $cat_row['cat_name']);
}

JS
'c1':{

        '<?echo($arr1[1][0]);?>':'<?echo($arr1[1][1]);?>',
  
  }


выводит одну строку. а как сделать, чтобы через массив вывести N строк? тоесть всето $arr1[1][0]) - $arr1[i][0])
Ответить с цитированием
  #2 (permalink)  
Старый 03.08.2011, 10:35
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

Правильно передавать данные, правильно разбирать на клиенте и отображать.
<select onchange="loadSubdata(this)">
    <option>-- Select category --</option>
    <option value="1">Category one</option>
    <option value="2">Category two</option>
</select>

<select id="test">
    <option>-- Subcategory --</option>
</select>

<script>
function getDataAbstaraction(val, callback) {
    var data = {
        1: {11: '11', 12: '12'},
        2: {21: '21', 22: '22'}
    };
    callback(data[val]);
}

function loadSubdata(obj) {
    var val = obj.options[obj.selectedIndex].value;
    if (!val) {
        return;
    }

    getDataAbstaraction(val, function(data) {
         var opts = '<option>-- Subcategory --</option>';
         for (var i in data) {
             opts += '<option value="' + i + '">' + data[i] + '</option>';
         }
         document.getElementById('test').innerHTML = opts;
    });
}
</script>
Ответить с цитированием
  #3 (permalink)  
Старый 03.08.2011, 11:53
Новичок на форуме
Отправить личное сообщение для bma2004 Посмотреть профиль Найти все сообщения от bma2004
 
Регистрация: 03.08.2011
Сообщений: 3

И всёже, как сделать, чтобы данные селект получал из БД, а не вводить в ручную в виде

data = {
1: {11: '11', 12: '12'},
2: {21: '21', 22: '22'}
};

?
Ответить с цитированием
  #4 (permalink)  
Старый 03.08.2011, 12:03
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

Так вопрос в этом о_О ?
У нас тут javascript форум, дружище. Так а что не ясно? Делаешь запрос к базе, потом формируешь нужный массив данных, потом отдаешь назад клиенту в виде json. В каком месте проблема?
Ответить с цитированием
  #5 (permalink)  
Старый 03.08.2011, 14:06
Новичок на форуме
Отправить личное сообщение для bma2004 Посмотреть профиль Найти все сообщения от bma2004
 
Регистрация: 03.08.2011
Сообщений: 3

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

из БД я получаю массив arr1
($arr1[i][0] где i строка, а "0" или "1" - соответственно значения для Value и Имени.)

соответственно вопрос в том, как заполнить из него <select через JS.
Ответить с цитированием
  #6 (permalink)  
Старый 13.11.2016, 12:28
Новичок на форуме
Отправить личное сообщение для Padonko Посмотреть профиль Найти все сообщения от Padonko
 
Регистрация: 13.11.2016
Сообщений: 1

<?php
$query = "SELECT * FROM ... BY ...";
$result = mysql_query($query);

while($row = mysql_fetch_row($result)){
    $mass[] = $row;}
$json = json_encode($mass, JSON_UNESCAPED_UNICODE);
?>


<script>
var data = <?= $json ?>;
</script>


так?
Ответить с цитированием
  #7 (permalink)  
Старый 13.11.2016, 12:48
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 10,864

Сообщение от Padonko
mysql_fetch_row($result)
Нет.

bma2004,

$data = null;
if($id = (int)$_POST['name_first_select']) {
    $result = mysql_query('SELECT cat_id, cat_name FROM table WHERE id = ' . $id . ' ORDER BY cat_id');
    if($result) while($data[] = mysql_fetch_assoc($result) OR array_pop($data));
}

exit(json_encode($data));


$.post(url, {name_first_select : select_value}, function(data) {
    if(!!data) //строим второй список, предварительно его очистив
}, 'json')

Последний раз редактировалось laimas, 13.11.2016 в 13:24.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Элемент <select> и js в IE illya_v Internet Explorer 4 30.03.2011 09:36
Не получается передать переменную из JS в PHP Lion_astana AJAX и COMET 2 23.11.2010 16:23
JS - кроссдоменное обращение ajon Общие вопросы Javascript 4 08.10.2010 19:50
помогите задать переменную в js bsgroupua Общие вопросы Javascript 3 01.02.2010 17:28
Можно ли сделать выбор имени запускаемого js скрипта из <select> super28 Общие вопросы Javascript 6 12.12.2009 21:22