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

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

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

Регистрация: Oct 2010
Сообщений: 22
По умолчанию Связь PHP - AS 3.0

Учусь программированию поэтому сразу прошу прощения за глупый вопрос
в общем пытаюсь передать данные из as 3.0 в PHP связываюсь с БД скачиваю таблицу
формирую файл на сервере и потом скачиваю его при помощи URLLoader. Всё работает, но мне не нравится тот факт, что я не знаю о времени окончания формирования файла, а как получить ответ от PHP не могу понять
Привожу код из AS
Код AS3:
public class Download extends Object
	{
		// 1 Переменные класса
		private var request:URLRequest = new URLRequest();// адреса запросов
		private var loader:URLLoader=new URLLoader();// загрузчик для файла
		private var timer:Timer = new Timer(100,1);// задержка между повторной закачкой файла в случае неудачи
		private var urlVariables:URLVariables=new URLVariables();// url-переменная 
		private var errorCounter:int = 0;// счётчик неудачных загрузок файла
		private var arrayDataOfTable:Array=new Array();// конечный массив скачиваемых данных
		public static var arrayData:Array=new Array();// конечный массив скачиваемых данных
		// 2 Конструктор класса
 		public function Download(urlRequest:String, urlDownload:String, nameTable:String)
		{
			// формируем запрос к MySql для запуска серверного скрипта
			request.method = URLRequestMethod.POST;
			request.url=urlRequest;
			// в качестве параметра для серверного скрипта передаём название скачиваемой таблицы
			urlVariables.type = nameTable;
			request.data = urlVariables;
			// отсылаем запрос
			sendToURL(request);
			// формируем запрос для скачивания готового файла
			request.url = urlDownload;
			// даём серверу время на отработку
			startDownload();
			// и ставим слушателей событий на завершение закачки или ошибку скачивания
			loader.addEventListener(Event.COMPLETE, compliteLoadListener);
			loader.addEventListener(IOErrorEvent.IO_ERROR, errorLoadListener);
		}
		// 3   Закрытые методы  класса
		// 3.1 запускаем таймер на выдержку по окончании которой выполняем функцию загрузки файла
		private function startDownload()
		{
			timer.start();
			timer.addEventListener(TimerEvent.TIMER, downloadFile);
		}
		// 3.2 Запускаем процесс скачивания файла
		private function downloadFile(e:TimerEvent):void
		{
			// в случае если скачивание было ошибочным менее 50 раз
			if (errorCounter < 50)
			{
				// увеличиваем значение счётчика неудачных загрузок
				errorCounter++;
				// посылаем команду загрузки файла
				loader.load(request);
			}
			else
			{
				// формируем действие клипа на отсутсвие связи с базой данных
				trace("не получилось скачать файл");
			}
		}
		// 3.3 функция обработки скачанных данных
		private function compliteLoadListener(e:Event)
		{
			var string:String="";// строка для занисение в неё строки из скаченного файла
			var array:Array=new Array();// промежуточный массив для занесения подстрок будущено массива
			var i:int;
			// полученные данные заносим в строку
			string = loader.data;
			// и осуществляем формирование массива разделяя строки разделителем "~~"
			array = string.split("~~");
			// в случае если последний элемнт полученного массива равен "endString"
			if (array[array.length - 1] == "endString")
			{
				// удаляем последний элемент
				array.pop();
			}else{
				// в противном случае формируем новую загрузку
				startDownload();
			}
			// формируем двухмерный массов для помещения туда таблицы из БД
			for (i=0; i<array.length; i++)
			{
				arrayDataOfTable[i]=new Array();
				arrayDataOfTable[i] = array[i].split("~");
			}
			// заносим значение полученного массива в статическую переменную для возможности 
			// обращения к нему из других точек кода
			arrayData=arrayDataOfTable;
		}
		// 3.4 функция обработки неудачной загрузки файла
		private function errorLoadListener(e:IOErrorEvent)
		{
			// инициализируем новую закачку
			startDownload();
		}
	}
}
Код PHP:
PHP код:
<?php
$typeRequest
=$_GET['type'];
echo 
'запрос от Flash о подключении к таблице: '.$typeRequest.'<BR>';
// подключаемся к базе данных для получения спмска login-password
$connection=mysql_connect("localhost","root","1205") or die ("No connect with MySql");
echo 
'установка соединения с MySql прошла успешно<br>';
$db=mysql_select_db ("data",$connection)or die ("No connect with BD");
echo 
'подключение к БД data была выполнена<br>';
// формирование запроса
$query="SELECT * FROM `$typeRequest`";
// отпрака запроса
$result=mysql_query($query);
echo 
"запрос в БД был отправлен".$result."<br>";
// проверяем наличие файла на сервере в случае присутствия удаляем его
if (file_exists ("login.txt")){
    
unlink ("login.txt");
    echo 
'файл удалён<br>';
}
// формируем строку с данными из таблицы столбцы разбиваем "~" строки "~~"
$string="";
while (
$row mysql_fetch_array($resultMYSQL_NUM)) {
    for (
$i=0$i<count($row); $i++){ 
        
$string.=$row[$i]."~";
    }
    
$string.='~';
}
// добавляем знак окончания строки
$string.="endString";
echo 
$string.'<br>';
// записываем полученную строку в файл
$handle fopen ("login.txt""w+b");
if (
fwrite($handle$string)==false){
        echo 
"ничё не записалось"."<br>";
    }else{
           echo 
"записался прикольный фаил смотри на диске"."<br>";
}
// закрываем фаил и обнуляем результат запроса к MySql
fclose ($handle);
mysql_free_result($result);
?>
буду очень благодарен всем кто просмотрит до конца и пояснит мне неучу
как получить сообщение от PHP о завершении его работы

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Зачем вам вообще реальный файл? Отдавайте строку
PHP код:
echo $string.'<br>' 
вот это и есть ваши данные отданные флешке, все остальное лишнее.
Вместо:
Код AS3:
// даём серверу время на отработку
startDownload();
Пишете:
Код AS3:
request.addEventListener(Event.COMPLETE, onComplete);
request.load();
...
private function onComplete(event:Event):void
{
   trace(URLLoader(event.target).data); //ваша строка
}

Старый 29.10.2010, 01:20
DenverusIm вне форума Посмотреть профиль Отправить личное сообщение для DenverusIm Найти все сообщения от DenverusIm
  № 3  
Ответить с цитированием
DenverusIm

Регистрация: Oct 2010
Сообщений: 22
Жизнь прекрасна код выглядит немного по другому, но за идею просто огромное спасибо. Я над этой задачей биля месяц не мог ни где прочитать, а спрашивать стыдно блин.
Зато теперь всё станет совсем по другому
Ещё раз спасибо
Код AS3:
loader.addEventListener(Event.COMPLETE,onComplete);
loader.load(request);
...
private function onComplete(event:Event):void
{
   trace(URLLoader(event.target).data); //ваша строка
}

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

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

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


 


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


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