Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 04.04.2014, 00:15
mariamarfi вне форума Посмотреть профиль Отправить личное сообщение для mariamarfi Найти все сообщения от mariamarfi
  № 1  
Ответить с цитированием
mariamarfi

Регистрация: 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

Код AS3:
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);
PHP код:
<?php
header
("Content-Type: text/xml");
/*
//////Connect to MySQL//////
mysql_connect("localhost", "root", "") or die (mysql_error()); //Открывает соединение с сервером MySQL
mysql_select_db("record_table") or die (mysql_error()); //Выбирает базу данных MySQL
mysql_query("SET NAMES 'utf8'"); //Посылает запрос MySQL
*/
$command = isset($_GET['command']) ? $_GET['command'] : "";
$name = isset($_GET['name']) ? $_GET['name'] : "";
$points = isset($_GET['points']) ? $_GET['points'] : "";

$servername="localhost";// ваш сервер - обычно localhost
$user="root"//ваш_пользователь
$password=""//ваш_пароль
$dbname="record_table"//ваша_база_данных
$dbserver mysql_connect($servername$user$password);
mysql_select_db($dbname$dbserver);

mysql_query("SET NAMES utf8");

if(
$command=="readRecord")
{
    
$query "SELECT * FROM record ORDER BY points DESC LIMIT 0, 8";
    
$result mysql_query($query);
    echo 
'<?xml encoding="utf-8" version="1.0" ?><records>';
    while(
$myrow mysql_fetch_array($result))
    {
        echo 
'<record>';
            echo 
'<name>'.$myrow['name'].'</name>';
            echo 
'<points>'.$myrow['points'].'</points>';
        echo 
'</record>'
    } 
    echo 
'</records>'


if(
$command=="writeRecord")
{
    
$query="INSERT INTO record (name, points) VALUES ('$name', '$points')";
    
$result mysql_query($query);
}

mysql_close($dbserver);

?>
Код:
<?xml version="1.0" encoding="utf-8"?>
<records>
	<record>
		<name>Нина</name>
		<points>1232</content>
	</record>
	<record>
		<name>Инна</name>
		<points>1029</content>
	</record>
	<record>
		<name>Вера</name>
		<points>863</content>
	</record>
</records>
Миниатюры
Нажмите на изображение для увеличения
Название: 1.png
Просмотров: 109
Размер:	108.9 Кб
ID:	30696  
Вложения
Тип файла: rar Record.rar (539.2 Кб, 7 просмотров)

Старый 04.04.2014, 02:15
alexandrratush вне форума Посмотреть профиль Отправить личное сообщение для alexandrratush Найти все сообщения от alexandrratush
  № 2  
Ответить с цитированием
alexandrratush
 
Аватар для alexandrratush

Регистрация: Jul 2013
Адрес: Днепр
Сообщений: 529
Отправить сообщение для alexandrratush с помощью ICQ Отправить сообщение для alexandrratush с помощью Skype™
Ошибка вот в этой строчке, если честно не пойму что вы хотели тут сделать:
Код AS3:
var item:Object = {Место:i, Имя:item.name, Очки:item.points};
Вы создали объект item, и используете его поля name и points, которых у него нету.

И если это весь ваш код, то вы не вызываете функции обращения к серверу.
Добавьте кнопку, вешайте на нее слушатель, и вызывайте в нем функцию writeRecord или readRecord.

Старый 04.04.2014, 11:21
mariamarfi вне форума Посмотреть профиль Отправить личное сообщение для mariamarfi Найти все сообщения от mariamarfi
  № 3  
Ответить с цитированием
mariamarfi

Регистрация: Mar 2012
Сообщений: 61
В источнике написано вот так:
Вот пример флешки читающий рекорды из базы данных MySQL используя PHP. Здесь для вывода данных я использовал флешовский компоненты DataGrid и Button. Использование компонентов упрощает проектирование, но несколько увеличивает объем флешки, а также не гарантирует правильную совместимую с вашим приложением работу.
Я добавил компонент DataGrid и назвал его gridRecord. Добавление заголовка осуществляется функцией

gridRecord.columns=["Место","Имя","Очки"];

Добавление полей

gridRecord.addItem({Место:i, Имя:item.name, Очки:item.points});

Удаление всех полей

gridRecord.removeAll();


Я написала изначально эти коды в своей программе, выдаётся ошибка (см в картинке)



Код AS3:
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);
Миниатюры
Нажмите на изображение для увеличения
Название: 2.png
Просмотров: 72
Размер:	90.6 Кб
ID:	30697  
Изображения
 

Старый 04.04.2014, 11:24
mariamarfi вне форума Посмотреть профиль Отправить личное сообщение для mariamarfi Найти все сообщения от mariamarfi
  № 4  
Ответить с цитированием
mariamarfi

Регистрация: 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 ;
У меня три столбца: id, name, points.

Как их отобразить во флэше?

Создать новую тему Ответ Часовой пояс GMT +4, время: 12:51.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 12:51.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.