21.10.2016, 15:12
|
Интересующийся
|
|
Регистрация: 21.10.2016
Сообщений: 12
|
|
Сообщение от ksa
|
Navka1, начнем с того, что в тег <a> не стоит "вставлять" теги <li>...
Для анализа циклов бывает достаточно просто выводить то, с чем имеешь дело в самом цикле. Обычно это многое проясняет...
|
Спасибо за ответы!
О теге <a> учту, но console.log(list['list'][key1]["ima"]) показывает так же 3 строки...
|
|
21.10.2016, 15:19
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Сообщение от Navka1
|
но console.log(list['list'][key1]["ima"]) показывает так же 3 строки...
|
И что с того?
Цикл-то у тебя идет не по
list['list'][key1]["ima"]
а по
Сообщение от Navka1
|
for (var key2 in list['list'][key1]) {...}
|
Т.е. по
list['list'][key1][key2]
|
|
21.10.2016, 15:22
|
Интересующийся
|
|
Регистрация: 21.10.2016
Сообщений: 12
|
|
Сообщение от ksa
|
И что с того?
Цикл-то у тебя идет не по
list['list'][key1]["ima"]
а по
Т.е. по
list['list'][key1][key2]
|
Как я понимаю, необходимо сделать еще один вложенный цикл, уже по ключу list['list']["ima"][key3]?
|
|
21.10.2016, 15:24
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Сообщение от Navka1
|
Как я понимаю, необходимо сделать еще один вложенный цикл, уже по ключу list['list']["ima"][key3]?
|
Может и так... Я просто пока не понял нужные ТСу и тебе подробности...
Т.к. лучший вариант это сделать тестовый пример на котором можно что-то показать...
А у вас просто куски какого-то не работающего кода.
|
|
21.10.2016, 15:25
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Сообщение от Navka1
|
Как я понимаю, необходимо сделать еще один вложенный цикл, уже по ключу list['list']["ima"][key3]?
|
Только тогда не понятно зачем вам там цикл по key2...
|
|
21.10.2016, 15:28
|
Интересующийся
|
|
Регистрация: 21.10.2016
Сообщений: 12
|
|
Есть запрос к БД:
$qr_result = mysql_query("select ket.district.id, ket.district.ima, count(marker.district) from district
left join ket.marker on ket.marker.district = ket.district.ima
group by district ORDER BY id;");
$qr_result2 = mysql_query("SELECT count(*) FROM `marker`;")
or die(mysql_error());
$list = array();
//$alllist = array();
while($r = mysql_fetch_assoc($qr_result))
{
$list['list'][] = $r;
};
while($d = mysql_fetch_assoc($qr_result2))
{
$list['allLIST'][] = $d;
};
echo json_encode($list);
//echo json_encode($alllist);
?>
Ответ приходит в следующем виде:
{"list":[{"id":"1","ima":"...","count(marker.district)":"1" },
..........,
"allLIST":[{"count(*)":"6"}]}
В аяксе хочу выводить только значения ima и count(marker.district), но выводится все это добро сразу три раза...
При этом, при выводе ключа "allLIST":[{"count(*)":"6"}]} - все происходит нормально в этом куске кода:
for (var key1 in list['allLIST'])
{
html+='<a class = "link" onclick="event.preventDefault()">';
for (var key2 in list['allLIST'][key1]) {
html+='<li class = "big" onclick="alldistrict()")>Все районы  \(' + list['allLIST'][key1]['count(*)'] + "\)</li>";
}
html+='</a>';
}
console.log(html);
$("ul.list").html(html);
Собственно, вопрос в том, как пофиксить дублирование строк при выводе их из ассоциативного массива в цикле
Пардон, скорее из объекта, а не массива
|
|
21.10.2016, 15:28
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Зачем этот цикл?
Сообщение от Navka1
|
for (var key2 in list['list'][key1]) {
//i++;
// console.log(i);
html +='<li class = "big" onclick="findList(' + (+key1 + 1) + ')">' + list['list'][key1]["ima"] + " \(" + list['list'][key1]["count(marker.district)"] + "\)</li>";
//console.log(list['list'][key1]["ima"]);
}
|
Ведь далее про key2 вообще нет ни слова...
|
|
21.10.2016, 15:32
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Начнем учить тебя как делать тестовый пример...
Сообщение от Navka1
|
Есть запрос к БД:
|
Это тут не интересно...
Сообщение от Navka1
|
Ответ приходит в следующем виде:
{"list":[{"id":"1","ima":"...","count(marker.district)": "1" },
..........,
"allLIST":[{"count(*)":"6"}]}
|
А вот ответ нужно сделать более полным.
Т.е. привести 3-4 полновесных элемента (а у тебя один) для демонстрации
Ну и потом показать пример хтмля, который хочешь получить на этих данных.
Все!
Тестовый пример готов. С ним можно будет работать.
|
|
21.10.2016, 15:39
|
Интересующийся
|
|
Регистрация: 21.10.2016
Сообщений: 12
|
|
Сообщение от ksa
|
Т.е. привести 3-4 полновесных элемента (а у тебя один) для демонстрации
Ну и потом показать пример хтмля, который хочешь получить на этих данных.
Все!
Тестовый пример готов. С ним можно будет работать.
|
Слушаюсь, сэр!
Примеры 3-х элементов в list+allLIST:
{"list":[{"id":"1","ima":"\u0421\u0432\u044f\u0442\u043e\u0 448\u0438\u043d\u0441\u043a\u0438\u0439","count(ma rker.district)":"1"},
{"id":"2","ima":"\u0413\u043e\u043b\u043e\u0441\u0 435\u0435\u0432\u0441\u043a\u0438\u0439","count(ma rker.district)":"1"},
{"id":"3","ima":"\u0414\u0430\u0440\u043d\u0438\u0 446\u043a\u0438\u0439","count(marker.district)":"0 "},
..........
"allLIST":[{"count(*)":"6"}]}
Желаемый html-код:
<li class = "big" onclick="findList(1)">Святошинский (0)</li>
Тобишь:
'<li class = "big" onclick="findList(' +КЛЮЧ id + ')">' + КЛЮЧ ima + " \(" + КЛЮЧ count(marker.district) + '\)</li>'
Последний раз редактировалось Navka1, 21.10.2016 в 15:51.
|
|
21.10.2016, 15:54
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Сообщение от Navka1
|
Примеры 3-х элементов в list+allLIST:
{"list":[{"id":"1","ima":"\u0421\u0432\u044f\u0442\u043e \u0 448\u0438\u043d\u0441\u043a\u0438\u0439","count(ma rker.district)":"1"},
{"id":"2","ima":"\u0413\u043e\u043b\u043e\u0441 \u0 435\u0435\u0432\u0441\u043a\u0438\u0439","count(ma rker.district)":"1"},
{"id":"3","ima":"\u0414\u0430\u0440\u043d\u0438 \u0 446\u043a\u0438\u0439","count(marker.district)":"0 "},
..........
"allLIST":[{"count(*)":"6"}]}
|
Тут на форуме есть возможность форматировать код...
А мне пришлось твою писанину еще и подправлять.
Вот такой вариант получился.
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
var obj={
"list":[
{
"id":"1",
"ima":"\u0421\u0432\u044f\u0442\u043e\u0448\u0438\u043d\u0441\u043a\u0438\u0439",
"count(marker.district)":"1"
},
{
"id":"2",
"ima":"\u0413\u043e\u043b\u043e\u0441\u0435\u0435\u0432\u0441\u043a\u0438\u0439",
"count(marker.district)":"1"
},
{
"id":"3",
"ima":"\u0414\u0430\u0440\u043d\u0438\u0446\u043a\u0438\u0439",
"count(marker.district)":"0 "
}
],
"allLIST":[
{"count(*)":"6"}
]
};
$(function(){
var o=$('#test')
for (var i=0; i<obj.list.length; i++) {
var str='<li class = "big" onclick="alert(' + (i + 1) + ')">';
str=str + obj.list[i].ima + ' (' + obj.list[i]['count(marker.district)'];
str=str + ')</li>';
o.append(str);
};
});
</script>
</head>
<body>
<ul id='test'></ul>
</body>
</html>
Вот это и называется тестовым примером.
|
|
|
|