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, время: 22:25. |