Работа getProfiles с множеством пользователей

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в IFrame-приложениях (JavaScript, PHP и т.д)
Ответить
Аватара пользователя
ROI
Сообщения: 3
Зарегистрирован: 14 янв 2013, 08:28

Работа getProfiles с множеством пользователей

Сообщение ROI »

Сразу хочу извиниться за свою некомпетентность в этом вопросе. К сожалению, я как дизайнер очень далек от программирования. С горем пополам знаю html и css, а java и php для меня темный лес. Поставив себе задачу найти способ получить список пользователей лайкнувших определенный пост, я нашел множество советов и уроков на данном форуме и финал (казалось бы) был уже близок, но финишную черту пересечь так и не получилось.

Что имеем … С помощью likes.getList вытаскиваю список айди пользователей у необходимой записи.
Для проверки вывожу на экран. Все отлично работает.

Код: Выделить всё

<html><head><script src="http://vkontakte.ru/js/api/xd_connection.js?2"type="text/javascript"></script><script type="text/javascript" charset="cp1251" >window.onload = (function() {    VK.init(function() { VK.api("likes.getList", {type: "post", owner_id: "-33393308", item_id:"64057", count:"1000"}, function(data){document.getElementById('user_info').innerHTML = data.response.users; });});}); </script></head><body><div id="user_info"></div></br> </body></html>
Затем, очевидно, необходимо users.get скормить этот список id, и выбрать среди полученных данных поля first_name, last_name и упорядочив по имени вывести на экран:

Код: Выделить всё

    VK.api("users.get", {uids:наш_список_айди, fields:"first_name", fields:"last_name"}, function(data) {            var usr = data.response.count;              var users_data = data.response.sort(sFirstName);         var usrListHtml = '';        for(var i=0;i<fr;i++){            usrListHtml += users_data[i].first_name + ' ' + users_data[i].last_name + '<br />';        }        document.getElementById('users_list').innerHTML = usrListHtml;    });       });});  function sFirstName(a,b) {    if (a.first_name > b.first_name)        return 1;    else if  (a.first_name < b.first_name)        return -1;    else        return 0;}
И вот на моменте, когда необходимо скормить users.get список айди из likes.getList я и затыкаюсь. Гипоталамусом чую, что тут надо использовать execute, но т.к. с синтаксисом java не знаком, то не имею понятия, как с этим зверкем обращаться. Надеюсь на вашу помощь, спасибо :geek:
Аватара пользователя
manticore
Сообщения: 119
Зарегистрирован: 08 дек 2012, 18:53

Re: Работа getProfiles с множеством пользователей

Сообщение manticore »

Если ты не знаешь как собрать ID, то просто засунь их все с помощью цикла в строку через запятую, далее вставь это строку в uids, вот тебе и получится список ID людей из likes.getlist. Можно помойму еще в массив все записать и этот массив использовать как uids. :)
Аватара пользователя
ROI
Сообщения: 3
Зарегистрирован: 14 янв 2013, 08:28

Re: Работа getProfiles с множеством пользователей

Сообщение ROI »

manticore писал(а):Если ты не знаешь как собрать ID, то просто засунь их все с помощью цикла в строку через запятую, далее вставь это строку в uids, вот тебе и получится список ID людей из likes.getlist. Можно помойму еще в массив все записать и этот массив использовать как uids. :)
Так он и так по data.response.users отдает список айдишников через запятую.

Я пытался через

Код: Выделить всё

document.getElementById('users_id').value = data.response.users;
засунуть в переменную users_id, а потом скормить ее

Код: Выделить всё

VK.api("users.get", {uids:users_id, fields:"first_name", fields:"last_name"}
Но очевидно, что я неправильно ее подсовываю ему, а как правильно не знаю и нигде найти примера не могу :(
Serge
WEB Team
WEB Team
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55

Re: Работа getProfiles с множеством пользователей

Сообщение Serge »

Достаточно сделать что-то в формате (лень писать полный код)

Код: Выделить всё

var users_str;VK.api('likes.getList' ... function (data){     VK.api('users.get',{uids:data.response.users}...)} 
Alazaur
Разработчик
Разработчик
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25

Re: Работа getProfiles с множеством пользователей

Сообщение Alazaur »

Код: Выделить всё

<html>    <head>        <script type="text/javascript" src="http://vkontakte.ru/js/api/xd_connection.js?2"></script>    </head>    <body>        <div id="user_info"></div>        <script type="text/javascript">            VK.init(function() {                VK.api("execute", {code:'return API.users.get({uids:API.likes.getList({type:"post",owner_id:"-33393308",item_id:"64057",count:"1000"}).users, fields:"first_name,last_name"});'}, function(data)                {                    var sortedArray = data.response.sort(sFirstName);                    var str = '';                    for(var i = 0; i<sortedArray.length; i++)                    {                        str += sortedArray[i].first_name + " " + sortedArray[i].last_name + "<br>\n";                    }                    document.getElementById("user_info").innerHTML = str;                });            });                        function sFirstName(a,b) {                if (a.first_name > b.first_name) return 1;                else if  (a.first_name < b.first_name) return -1;                else return 0;            }        </script>    </body></html>
Пользуйтесь :)
Аватара пользователя
ROI
Сообщения: 3
Зарегистрирован: 14 янв 2013, 08:28

Re: Работа getProfiles с множеством пользователей

Сообщение ROI »

Alazaur писал(а):Пользуйтесь :)
Огромное спасибо! Работает как часы, то что доктор прописал! :P
Ответить