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]) |
Правильно передавать данные, правильно разбирать на клиенте и отображать.
<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> |
И всёже, как сделать, чтобы данные селект получал из БД, а не вводить в ручную в виде
data = { 1: {11: '11', 12: '12'}, 2: {21: '21', 22: '22'} }; ? |
Так вопрос в этом о_О ?
У нас тут javascript форум, дружище. Так а что не ясно? Делаешь запрос к базе, потом формируешь нужный массив данных, потом отдаешь назад клиенту в виде json. В каком месте проблема? |
таки как раз в последнем :)
из БД я получаю массив arr1 ($arr1[i][0] где i строка, а "0" или "1" - соответственно значения для Value и Имени.) соответственно вопрос в том, как заполнить из него <select через JS. |
<?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> так? |
Цитата:
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') |
Часовой пояс GMT +3, время: 08:33. |