В общем мне нужно чтобы при клике на кнопку пользователь автоматически вносился в список кликнувших, который находится рядом с самой кнопкой.
Но надо чтобы Пользователи не повторялись и админ приложения мог обнулить список не обновляя само приложение... Как то так)
Список будет состоять примерно из 5k кликов, или больше, и желательно
этот список что бы содержал фото пользователя, имя и фамилию, при клики на которые переходило бы на его страницу)
На as3
Заранее спасибо)
Ну или хотя бы подробно опишите как это делать)
Ну или опишите только взаимодействие с базой данных, это ведь через базу делается?
И вообще как с базами в данном случае работать, потому что в базах я ничего вообще не шарю)
По клику в список
Re: По клику в список
Я сам только учусь, но сделать можно вот как.
1. При загрузке приложения, вытаскивай данные о пользователе с помощью users.get. Как это сделать можно посмотреть в уроках на форуме.
2. Конектишься к php скрипту, который будет записывать эти данные в таблицу. Таблица с полями uid, photo, first_name, last_name.
3. Теперь, когда юзверь кликает на кнопку, вытаскиваешь данные из базы по viewer_id.
4. Обновляшь кол-во кликов (я так понял это цифра), добавляя +1
Ну и так же само можешь вывести из базы список кликнувших. Создай еще одно поле, и пиши в нем 1 если юзверь кликнул по кнопке. если не кликнул - будет 0. потом вытаскивай всех кто кликнул, и выводи о них данные.
А чтобы не кликнул два раза, так же само смотри, если у него стоит 1, то выбивай окно "вы уже кликали", если 0 - пропускай
Это все можно сделать намного проще, но я не знаю как. Как узнаю - скажу
1. При загрузке приложения, вытаскивай данные о пользователе с помощью users.get. Как это сделать можно посмотреть в уроках на форуме.
2. Конектишься к php скрипту, который будет записывать эти данные в таблицу. Таблица с полями uid, photo, first_name, last_name.
3. Теперь, когда юзверь кликает на кнопку, вытаскиваешь данные из базы по viewer_id.
4. Обновляшь кол-во кликов (я так понял это цифра), добавляя +1
Ну и так же само можешь вывести из базы список кликнувших. Создай еще одно поле, и пиши в нем 1 если юзверь кликнул по кнопке. если не кликнул - будет 0. потом вытаскивай всех кто кликнул, и выводи о них данные.
А чтобы не кликнул два раза, так же само смотри, если у него стоит 1, то выбивай окно "вы уже кликали", если 0 - пропускай
Это все можно сделать намного проще, но я не знаю как. Как узнаю - скажу
Re: По клику в список
Спасибо, буду пробовать) А кто нибудь знает еще как сделать проще?
Re: По клику в список
Нет смысла хранить в базе имя/фото, лучше их получать из АПИ, храня у себя только уиды.
Ну а в целом, как написано выше - при нажатии на кнопку записать пользователя в базу (можно даже не парится на счет кликал/не кликал, если это не нужно, а просто делать REPLACE запрос. Или INSERT с игнорированием дублирования).
Выборка из базы тоже очень просто, а потом полученные данные объединять в строку и кормить АПИ.
Ну а в целом, как написано выше - при нажатии на кнопку записать пользователя в базу (можно даже не парится на счет кликал/не кликал, если это не нужно, а просто делать REPLACE запрос. Или INSERT с игнорированием дублирования).
Выборка из базы тоже очень просто, а потом полученные данные объединять в строку и кормить АПИ.
Re: По клику в список
В общем с этим списком я разобрался почти, но на сколько я понял гетПрофайлом можно узнать только информацию о 1000 пользователей, а мне надо минимум о 5000, как это сделать? У меня список uid из пхп берется, и из него уже берет id для гетПрофайла, я подозреваю что надо в пхп сделать несколько списков с uidами и несколько раз делать гетПрофайл с разными списками уидов, это стоит сделать так? Если да, то напишите как в пхп сформировать такие списки, а еси не так, то предложите альтернативу)
Re: По клику в список
Вот набросал вам функцию на AS которая будет загружать сколь угодно пользователей.
В функцию надо передать объект, с параметрами:
uids:Array - массив с идентификаторами пользователей,
onComplete:Function - функция которая будет вызвана, по завершении работы, в нее будет передан массив содержащий всех пользователей (такой же как и возвращается методом "users.get")
onError:Function - функция которая будет вызвана в случае ошибки. Эта функция передается в метод ВК, то есть должна принимать объект, как и функции передающиеся в VK.api()
Пример:
P.S. Никакой гарантии 100%-й безотказности не даю. Я попробовал получить данные на 5000 пользователей отработала успешно. Если будет работать без проблем - хорошо, а если где-то вылезут артефакты доработаете сами, направление куда копать я вам дал. Ну и смотрите еще, что, функция всвязи с ограничениями вконтакте делает 2 запроса к API в секунду, можно было сделать 3, но я оставил 1 как резерв, так что если у вас например 10.000 пользователей, рассчитывайте, что данные на них будут грузиться не менее 5 секунд.
Код: Выделить всё
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("Возникла ошибка");}
Re: По клику в список
Спасибо большое, буду тестить)