По клику в список

Если вы хотите получить что-то готовое и бесплатно, то пишите в этом разделе.
Ответить
Garch
Сообщения: 186
Зарегистрирован: 27 ноя 2011, 20:49

По клику в список

Сообщение Garch »

В общем мне нужно чтобы при клике на кнопку пользователь автоматически вносился в список кликнувших, который находится рядом с самой кнопкой.
Но надо чтобы Пользователи не повторялись и админ приложения мог обнулить список не обновляя само приложение... Как то так)
Список будет состоять примерно из 5k кликов, или больше, и желательно
этот список что бы содержал фото пользователя, имя и фамилию, при клики на которые переходило бы на его страницу)
На as3 :)
Заранее спасибо)
Ну или хотя бы подробно опишите как это делать)
Ну или опишите только взаимодействие с базой данных, это ведь через базу делается?
И вообще как с базами в данном случае работать, потому что в базах я ничего вообще не шарю)
Аватара пользователя
Богдан
Сообщения: 21
Зарегистрирован: 26 дек 2010, 05:22

Re: По клику в список

Сообщение Богдан »

Я сам только учусь, но сделать можно вот как.

1. При загрузке приложения, вытаскивай данные о пользователе с помощью users.get. Как это сделать можно посмотреть в уроках на форуме.
2. Конектишься к php скрипту, который будет записывать эти данные в таблицу. Таблица с полями uid, photo, first_name, last_name.
3. Теперь, когда юзверь кликает на кнопку, вытаскиваешь данные из базы по viewer_id.
4. Обновляшь кол-во кликов (я так понял это цифра), добавляя +1

Ну и так же само можешь вывести из базы список кликнувших. Создай еще одно поле, и пиши в нем 1 если юзверь кликнул по кнопке. если не кликнул - будет 0. потом вытаскивай всех кто кликнул, и выводи о них данные.

А чтобы не кликнул два раза, так же само смотри, если у него стоит 1, то выбивай окно "вы уже кликали", если 0 - пропускай

Это все можно сделать намного проще, но я не знаю как. Как узнаю - скажу ;)
Garch
Сообщения: 186
Зарегистрирован: 27 ноя 2011, 20:49

Re: По клику в список

Сообщение Garch »

Спасибо, буду пробовать) А кто нибудь знает еще как сделать проще?
Serge
WEB Team
WEB Team
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55

Re: По клику в список

Сообщение Serge »

Нет смысла хранить в базе имя/фото, лучше их получать из АПИ, храня у себя только уиды.
Ну а в целом, как написано выше - при нажатии на кнопку записать пользователя в базу (можно даже не парится на счет кликал/не кликал, если это не нужно, а просто делать REPLACE запрос. Или INSERT с игнорированием дублирования).
Выборка из базы тоже очень просто, а потом полученные данные объединять в строку и кормить АПИ.
Garch
Сообщения: 186
Зарегистрирован: 27 ноя 2011, 20:49

Re: По клику в список

Сообщение Garch »

В общем с этим списком я разобрался почти, но на сколько я понял гетПрофайлом можно узнать только информацию о 1000 пользователей, а мне надо минимум о 5000, как это сделать? У меня список uid из пхп берется, и из него уже берет id для гетПрофайла, я подозреваю что надо в пхп сделать несколько списков с uidами и несколько раз делать гетПрофайл с разными списками уидов, это стоит сделать так? Если да, то напишите как в пхп сформировать такие списки, а еси не так, то предложите альтернативу)
Alazaur
Разработчик
Разработчик
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25

Re: По клику в список

Сообщение Alazaur »

Вот набросал вам функцию на AS которая будет загружать сколь угодно пользователей.

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

function usersLoad(params:Object = null):void {    if (!params) params = arguments[0];    var currentTime:int = new Date().time;    if (!params.step) {        params.step = 0;        params.reTime = currentTime;    }    else {        var diffTime:int = currentTime - params.reTime;        if (diffTime < 500)        {            params.reTime = 0;            setTimeout(usersLoad, 500-diffTime, params);            return;        } else {            params.reTime = currentTime;        }    }    var uids:Array = params.uids;    var step:int = params.step;    var start:int = step * 1000;    var end:int = (start + 1000 >= uids.length)?uids.length:start + 1000;    var currentuids:String = '';    if (!params.users) params.users = new Array();    for (var i:int = start; i < end; i++)     {        currentuids += uids[i] + ',';    }    VK.api("users.get", { uids:currentuids, fields:"photo" }, function(o:Object):void     {        params.users = params.users.concat(o as Array);        if (end >= uids.length)         {            params.onComplete(params.users);            return;        }        params.step++;        usersLoad(params);    }, params.onError);}
В функцию надо передать объект, с параметрами:
uids:Array - массив с идентификаторами пользователей,
onComplete:Function - функция которая будет вызвана, по завершении работы, в нее будет передан массив содержащий всех пользователей (такой же как и возвращается методом "users.get")
onError:Function - функция которая будет вызвана в случае ошибки. Эта функция передается в метод ВК, то есть должна принимать объект, как и функции передающиеся в VK.api()

Пример:

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

//Все как обычноvar flashVars:Object = stage.loaderInfo.parameters as Object;var VK:APIConnection = new APIConnection(flashVars); //Массив с идентификаторами пользователей, теоретически идентификаторов может быть сколь угодно.var userids:Array = [1232334, 564435435, 54786548375, 4564756746, 3463746374];  //Вызываем нашу функциюusersLoad({uids:userids, onComplete:loadedUsers, onError:loadingError}); //Определяем функции обработчикиfunction loadedUsers(users:Array):void {   //Массив users будет содержать данные пользователей.   trace(users[0].first_name);//Для примера выведем имя первого} function loadingError(error:Object) {   //Функция обработки ошибки, ее вызывает метод APIConnection   trace("Возникла ошибка");}
P.S. Никакой гарантии 100%-й безотказности не даю. Я попробовал получить данные на 5000 пользователей отработала успешно. Если будет работать без проблем - хорошо, а если где-то вылезут артефакты доработаете сами, направление куда копать я вам дал. Ну и смотрите еще, что, функция всвязи с ограничениями вконтакте делает 2 запроса к API в секунду, можно было сделать 3, но я оставил 1 как резерв, так что если у вас например 10.000 пользователей, рассчитывайте, что данные на них будут грузиться не менее 5 секунд.
Garch
Сообщения: 186
Зарегистрирован: 27 ноя 2011, 20:49

Re: По клику в список

Сообщение Garch »

Спасибо большое, буду тестить)
Ответить