Получение/передача данных из БД

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в Flash-приложениях (ActionScript)
Ответить
Fizik
Сообщения: 3
Зарегистрирован: 09 фев 2011, 17:41

Получение/передача данных из БД

Сообщение Fizik »

Доброго времени суток! Я только-только начал переходить с ас2 на ас3. Случилась проблема с функциями приема/передачи переменных в mySQL.
У меня есть swf файл, где находятся две кнопки (load_btn и send_btn) и поле rez. При нажатии на кнопку load_btn должны загружаться переменные в поле rez. В свою очередь, при нажатии на кнопку send_btn должна происходить передача из бд. PHP скрипты рабочие, передача идет, а вот загрузка никак не получается, при компилировании компилятор ругается на ошибки, которые, к сожалению, не могу решить.
Вот код:

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

package {    import flash.net.*;    import flash.display.*;    import flash.events.*;    import flash.net.URLLoader;    import flash.display.MovieClip;     public class Main extends Sprite {         var loader:URLLoader;         send_btn.addEventListener(MouseEvent.CLICK, Send);        load_btn.addEventListener(MouseEvent.CLICK, Load);         public function Send(Event:MouseEvent):void {            var stat_loader:URLLoader = new URLLoader();            var stat_request:URLRequest=new URLRequest("http://fiz-lab.ru/stat.php");            stat_request.method=URLRequestMethod.POST;            var stat_vars:URLVariables = new URLVariables();            stat_vars['auth_key']=LoaderInfo(root.loaderInfo).parameters.auth_key;            stat_vars['viewer_id']=LoaderInfo(root.loaderInfo).parameters.viewer_id;            stat_vars['visits']=11;            stat_request.data=stat_vars;            stat_loader.load(stat_request);        }         public function Load(Event:MouseEvent):void {            loader = new URLLoader();            loader.load(new URLRequest("http://fiz-lab.ru/f.php"));            loader.addEventListener(Event.COMPLETE, onLoaded);        }        public function onLoaded(e:Event):void {            rez.text=loader.data;        }    }}
Ошибки компилятора:
1120: Обращение несуществующего свойства send_btn.
1120: Обращение несуществующего свойства Send.
1120: Обращение несуществующего свойства load_btn.
1120: Обращение несуществующего свойства Load.
1119: Обращение возможного неопределенного свойства COMPLETE через ссылку со статическим типом flash.events:MouseEvent .

Посмотрите опытным глазом, как мне исправить ошибки? :)
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Получение/передача данных из БД

Сообщение Александр »

Попробуй переименовать Send в onSend и Load в onLoad. Вполне возможно, что это слова используются во флеше не для обозначения имен пользовательских функций.

У кнопок заданы instanse name? send_btn и load_btn.
Fizik
Сообщения: 3
Зарегистрирован: 09 фев 2011, 17:41

Re: Получение/передача данных из БД

Сообщение Fizik »

Спасибо, решил это проблему. Но внезапно столкнулся с другой. Хочу сделать проверку id'а пользователя, который смотрит приложение, чтобы достать из базы "очки" этого пользователя. Пытался передавать id из флеш в php-скрипт, который достает очки из базы. Случилось так, что id не доходит до скрипта, подскажите, как решить проблему?
Nick Lisogor
FL Team
FL Team
Сообщения: 119
Зарегистрирован: 12 дек 2010, 14:08

Re: Получение/передача данных из БД

Сообщение Nick Lisogor »

Тут, вроде как, нету экстрасенсов. Напиши код класса и скрипта.
Fizik
Сообщения: 3
Зарегистрирован: 09 фев 2011, 17:41

Re: Получение/передача данных из БД

Сообщение Fizik »

as

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

function vSend():void {var stat_loader:URLLoader = new URLLoader();var stat_request:URLRequest=new URLRequest("http://fiz-lab.ru/f.php");stat_request.method=URLRequestMethod.POST;var stat_vars:URLVariables = new URLVariables();stat_vars['viewer_id']=LoaderInfo(root.loaderInfo).parameters.viewer_id;stat_request.data=stat_vars;stat_loader.load(stat_request);trace("1")vLoad();} function vLoad():void {loader = new URLLoader();loader.load(new URLRequest("http://fiz-lab.ru/f.php"));loader.addEventListener(Event.COMPLETE, onLoaded2);trace("2")} function onLoaded2(e:Event):void {    rez.text=loader.data;}
php

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

$viewer_id = (int)$_POST['viewer_id'];     mysql_connect($db_host, $db_user, $db_password);    mysql_select_db($db_name);    mysql_query("SET NAMES 'utf8'");     $get_id_from_db = mysql_query("SELECT count(*) FROM `$table_name` WHERE `uid`='$viewer_id'");    $num_id_from_db = mysql_result($get_id_from_db,0);     if($num_id_from_db==1) {       $get_score = mysql_query("SELECT `score` FROM `$table_name` WHERE `uid`='$viewer_id'");      $score = mysql_result($get_score,0);    }    $sql = mysql_query($query);    echo $score;
Буду премного благодарен, если поможете решить проблему :)
Nick Lisogor
FL Team
FL Team
Сообщения: 119
Зарегистрирован: 12 дек 2010, 14:08

Re: Получение/передача данных из БД

Сообщение Nick Lisogor »

Давайте разберем ваш .as код (как я понял, вы не полностью понимаете, что делаете, либо у вас недостаточно знаний в этой области).

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

function vSend():void{//Сдесь создаете экземпляр класса URLLoader и экземпляр URLRequest класса, сразу задав ссылку на отправкуvar stat_loader:URLLoader = new URLLoader();var stat_request:URLRequest=new URLRequest("http://fiz-lab.ru/f.php"); //Потом выбираете способ отправкиstat_request.method=URLRequestMethod.POST; //И создаете переменные для отправкиvar stat_vars:URLVariables = new URLVariables();stat_vars['viewer_id']=LoaderInfo(root.loaderInfo).parameters.viewer_id; //Потом задаете эти переменные в экземпляр класса URLRequeststat_request.data=stat_vars; //Загружаете экземпляром класса URLLoader все данные, указанные в URLRequest на адрес php скрипта, указанном вышеstat_loader.load(stat_request); //...trace("1") //Затем вы выполняете функцию vLoad(); она вам не нужна, поэтому мы её комментируем//vLoad(); //Вместо этого нужно добавить слушатель события Event.COMPLETE именно сдесь, а не слушать другой "новый" запросstat_loader.addEventListener(Event.COMPLETE, onLoaded2);} //И уже потом нужно будет написать функцию, которая срабатывает после успешного завершения загрузкиfunction onLoaded2(e:Event):void {    //И не забыть удалить слушатель    e.target.removeEventListener(Event.COMPLETE, onLoaded2);        //e.target - это объект, на который мы повесили слушатель    rez.text=e.target.data;}
PHP скрипт пока что не смотрел. Также не забываем о crossdomain.xml
Ответить