|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Mar 2012
Сообщений: 61
|
Ошибки - данные из БД не выводятся. AS3 доступ к MySQL средствами PHP
Ошибка:
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null". at record_fla::MainTimeline/frame1() Я, как новичок, решила попробовать на основе источника проверить доступ к MySQL. На сайте ссылки недоступны на скачивания файлов. Чуток изменила я в программе, т.к. не раз выдавали ошибки после компиляции... дело в dataGrid - item. Почему данные из БД не выводятся... Что не так сделала я? Источник: http://rad-line.blogspot.ru/2009/03/as3-mysql-php.html import fl.controls.DataGrid; function readRecord():void { var readRequest:URLRequest = new URLRequest(); var readLoader:URLLoader = new URLLoader(); readRequest.url='records.php'+'?command=readRecord&'+Math.random(); readLoader.addEventListener(Event.COMPLETE, allLoad); readLoader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); function ioErrorHandler(e:IOErrorEvent):void { trace("Ошибка чтения"); } var myXML:XML; function allLoad(e:Event):void { var tempLoader:URLLoader=URLLoader(e.target); myXML=new XML(tempLoader.data); if (myXML!="") { for each (var item:XML in myXML.record) { trace("Имя:"+item.name); trace("Очки:"+item.points);//выводим данные } } else { trace("Нет данных"); } } readLoader.load(readRequest); } function writeRecord(name:String, points:int):void { var saveRequest:URLRequest = new URLRequest(); var saveLoader:URLLoader = new URLLoader(); saveRequest.url='records.php'+'?command=writeRecord&name='+name+'&points='+points; saveLoader.addEventListener(Event.COMPLETE, allSave); saveLoader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); function ioErrorHandler(e:IOErrorEvent):void { trace("Ошибка записи"); } function allSave(e:Event):void { trace("Информация сохранена"); } saveLoader.load(saveRequest); } var gridRecord:DataGrid = new DataGrid; var i: uint; gridRecord.columns=["Место","Имя","Очки"]; //Добавление полей //gridRecord.addItem({Место:i, Имя:item.name, Очки:item.points}); var item:Object = {Место:i, Имя:item.name, Очки:item.points}; gridRecord.addItem(item); //Удаление всех полей gridRecord.removeAll(); addChild(gridRecord);
|
|
|||||
Ошибка вот в этой строчке, если честно не пойму что вы хотели тут сделать:
Вы создали объект item, и используете его поля name и points, которых у него нету. И если это весь ваш код, то вы не вызываете функции обращения к серверу. Добавьте кнопку, вешайте на нее слушатель, и вызывайте в нем функцию writeRecord или readRecord. |
|
|||||
Регистрация: Mar 2012
Сообщений: 61
|
В источнике написано вот так:
Вот пример флешки читающий рекорды из базы данных MySQL используя PHP. Здесь для вывода данных я использовал флешовский компоненты DataGrid и Button. Использование компонентов упрощает проектирование, но несколько увеличивает объем флешки, а также не гарантирует правильную совместимую с вашим приложением работу. Я добавил компонент DataGrid и назвал его gridRecord. Добавление заголовка осуществляется функцией gridRecord.columns=["Место","Имя","Очки"]; Добавление полей gridRecord.addItem({Место:i, Имя:item.name, Очки:item.points}); Удаление всех полей gridRecord.removeAll(); Я написала изначально эти коды в своей программе, выдаётся ошибка (см в картинке) import fl.controls.DataGrid; function readRecord():void { var readRequest:URLRequest = new URLRequest(); var readLoader:URLLoader = new URLLoader(); readRequest.url='records.php'+'?command=readRecord&'+Math.random(); readLoader.addEventListener(Event.COMPLETE, allLoad); readLoader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); function ioErrorHandler(e:IOErrorEvent):void { trace("Ошибка чтения"); } var myXML:XML; function allLoad(e:Event):void { var tempLoader:URLLoader=URLLoader(e.target); myXML=new XML(tempLoader.data); if (myXML!="") { for each (var item:XML in myXML.record) { trace("Имя:"+item.name); trace("Очки:"+item.points);//выводим данные } } else { trace("Нет данных"); } } readLoader.load(readRequest); } function writeRecord(name:String, points:int):void { var saveRequest:URLRequest = new URLRequest(); var saveLoader:URLLoader = new URLLoader(); saveRequest.url='records.php'+'?command=writeRecord&name='+name+'&points='+points; saveLoader.addEventListener(Event.COMPLETE, allSave); saveLoader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); function ioErrorHandler(e:IOErrorEvent):void { trace("Ошибка записи"); } function allSave(e:Event):void { trace("Информация сохранена"); } saveLoader.load(saveRequest); } //======= Из источника http://rad-line.blogspot.ru/2009/03/as3-mysql-php.html gridRecord.columns=["Место","Имя","Очки"]; //Добавление полей gridRecord.addItem({Место:i, Имя:item.name, Очки:item.points}); //Удаление всех полей gridRecord.removeAll(); //======= /Из источника http://rad-line.blogspot.ru/2009/03/as3-mysql-php.html /* Моё написание var gridRecord:DataGrid = new DataGrid; var i: uint; gridRecord.columns=["Место","Имя","Очки"]; //Добавление полей //gridRecord.addItem({Место:i, Имя:item.name, Очки:item.points}); var item:Object = {Место:i, Имя:item.name, Очки:item.points}; gridRecord.addItem(item); //Удаление всех полей gridRecord.removeAll(); addChild(gridRecord); |
|
|||||
Регистрация: Mar 2012
Сообщений: 61
|
CREATE TABLE `record` ( `id` INT( 3 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , `name` VARCHAR( 50 ) NOT NULL , `points` INT( 6 ) NOT NULL ) ENGINE = MYISAM ; Как их отобразить во флэше? |
Часовой пояс GMT +4, время: 12:51. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|