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

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в IFrame-приложениях (JavaScript, PHP и т.д)

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

Сообщение ROI » 14 янв 2013, 09:22

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

Что имеем … С помощью likes.getList вытаскиваю список айди пользователей у необходимой записи.
Для проверки вывожу на экран. Все отлично работает.
  1. <html>
  2. <head>
  3. <script src="http://vkontakte.ru/js/api/xd_connection.js?2"type="text/javascript"></script>
  4. <script type="text/javascript" charset="cp1251" >
  5. window.onload = (function() {
  6.     VK.init(function() {
  7.  
  8. VK.api("likes.getList", {type: "post", owner_id: "-33393308", item_id:"64057", count:"1000"}, function(data){
  9. document.getElementById('user_info').innerHTML = data.response.users;
  10.  
  11. });
  12. });
  13. });
  14.  
  15. </script>
  16. </head>
  17. <body>
  18. <div id="user_info"></div></br>
  19.  
  20. </body>
  21. </html>


Затем, очевидно, необходимо users.get скормить этот список id, и выбрать среди полученных данных поля first_name, last_name и упорядочив по имени вывести на экран:

  1.    VK.api("users.get", {uids:наш_список_айди, fields:"first_name", fields:"last_name"}, function(data) {
  2.             var usr = data.response.count;
  3.      
  4.         var users_data = data.response.sort(sFirstName);
  5.  
  6.         var usrListHtml = '';
  7.         for(var i=0;i<fr;i++){
  8.             usrListHtml += users_data[i].first_name + ' ' + users_data[i].last_name + '<br />';
  9.         }
  10.         document.getElementById('users_list').innerHTML = usrListHtml;
  11.     });
  12.    
  13.     });
  14. });
  15.  
  16.  
  17. function sFirstName(a,b) {
  18.     if (a.first_name > b.first_name)
  19.         return 1;
  20.     else if  (a.first_name < b.first_name)
  21.         return -1;
  22.     else
  23.         return 0;
  24. }


И вот на моменте, когда необходимо скормить users.get список айди из likes.getList я и затыкаюсь. Гипоталамусом чую, что тут надо использовать execute, но т.к. с синтаксисом java не знаком, то не имею понятия, как с этим зверкем обращаться. Надеюсь на вашу помощь, спасибо :geek:
Аватара пользователя
ROI

 
Автор темы
Сообщения: 3
Зарегистрирован: 14 янв 2013, 08:28
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.

Чтобы убрать блок с рекламой, зарегистрируйтесь на форуме или войдите.

Google
 



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

Сообщение manticore » 14 янв 2013, 14:41

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

 
Сообщения: 119
Зарегистрирован: 08 дек 2012, 18:53
Откуда: Москва
Благодарил (а): 17 раз.
Поблагодарили: 9 раз.

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

Сообщение ROI » 15 янв 2013, 00:48

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

Так он и так по data.response.users отдает список айдишников через запятую.

Я пытался через
  1. document.getElementById('users_id').value = data.response.users;
засунуть в переменную users_id, а потом скормить ее
  1. VK.api("users.get", {uids:users_id, fields:"first_name", fields:"last_name"}

Но очевидно, что я неправильно ее подсовываю ему, а как правильно не знаю и нигде найти примера не могу :(
Аватара пользователя
ROI

 
Автор темы
Сообщения: 3
Зарегистрирован: 14 янв 2013, 08:28
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.

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

Сообщение Serge » 15 янв 2013, 01:01

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

  1. var users_str;
  2. VK.api('likes.getList' ... function (data)
  3. {
  4.      VK.api('users.get',{uids:data.response.users}...)
  5. }
  6.  
http://sevenlines.com.ua - разработка и продвижение сайтов

За это сообщение автора Serge поблагодарил:
ROI
Serge
WEB Team
WEB Team
 
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55
Благодарил (а): 2 раз.
Поблагодарили: 65 раз.

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

Сообщение Alazaur » 15 янв 2013, 04:30

  1. <html>
  2.     <head>
  3.         <script type="text/javascript" src="http://vkontakte.ru/js/api/xd_connection.js?2"></script>
  4.     </head>
  5.     <body>
  6.         <div id="user_info"></div>
  7.         <script type="text/javascript">
  8.             VK.init(function() {
  9.                 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)
  10.                 {
  11.                     var sortedArray = data.response.sort(sFirstName);
  12.                     var str = '';
  13.                     for(var i = 0; i<sortedArray.length; i++)
  14.                     {
  15.                         str += sortedArray[i].first_name + " " + sortedArray[i].last_name + "<br>\n";
  16.                     }
  17.                     document.getElementById("user_info").innerHTML = str;
  18.                 });
  19.             });
  20.            
  21.             function sFirstName(a,b) {
  22.                 if (a.first_name > b.first_name) return 1;
  23.                 else if  (a.first_name < b.first_name) return -1;
  24.                 else return 0;
  25.             }
  26.         </script>
  27.     </body>
  28. </html>

Пользуйтесь :)

За это сообщение автора Alazaur поблагодарил:
ROI
Alazaur
Разработчик
Разработчик
 
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25
Благодарил (а): 24 раз.
Поблагодарили: 121 раз.

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

Сообщение ROI » 15 янв 2013, 05:59

Alazaur писал(а):Пользуйтесь :)

Огромное спасибо! Работает как часы, то что доктор прописал! :P
Аватара пользователя
ROI

 
Автор темы
Сообщения: 3
Зарегистрирован: 14 янв 2013, 08:28
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.


Вернуться в Создание IFrame-приложений ВКонтакте



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron