PDA

Просмотр полной версии : flash->php->MySQL


ChieF_Of_ReD
12.12.2011, 16:53
И снова здравствуйте, да, я проблемный ^^, знаю. Но перейдем к делу
Суть : наладить обмен данными flash->php->mysql и обратно.

Обратный процесс, реализован через FlashVars. Ролик всё замечательно принимает и это радует. Но при передачи возникают проблемы. Flash использовал LOadvars работает всё замечательно, оправляет и принимает, но с небольшими нюансами.
В пхп стоит условие: Если $_POST то принимает, чутка обрабатывает и отсылаем обратно измененный результат.
Вроде всё хорошо, флеш принимает, отправленные переменные, но в пхп я их отловить не могу, элементарные действия возможны. но выловить увы.
Как пытался решить эту проблему:
Так как пхп страница уже сгенерирована сервером, то пост запросы без обновления страницы обрабатываются через одно место из которого как мне кажется у меня растут руки, но не буду отвлекаться.
При выполнение POST прописал header с редиректом на эту страницу. Но он выполняться не захотел.

Пока это безобразие работает через getURL(); что меня совершенно не устраивает.

Тестил несколько "разных" скриптов для отправки через LoadVars, но всё тщетно - всё таже фигня.
PS движок пхп - drupal . Мб мне на него грешить?

В общем, советы приветствуются, критика поощряется.

mooncar
12.12.2011, 18:00
Если вам нужно без перезагрузки страницы отправлять и получать данные посредством запросов к PHP-скрипту, как к посреднику с базой, используйте метод LoadVars.sendAndLoad.
Никаких FlashVars и getURL. И тем более не надо никаких редиректов и header'ов.
Откройте пример по sendAndLoad в хелпе, там все есть и все для этих целей и придумано.
Это и совет и критика.
А если есть проблемы, лучше давать конкретику - код, скрипты, иначе пустая трата времени.

ChieF_Of_ReD
12.12.2011, 18:19
var dataOut:LoadVars = new LoadVars();
var dataIn:LoadVars = new LoadVars();

dataIn.onLoad = function() {
if (this.valid == "1") {
outputResult.text = 'Новые координаты внесены в базу '+this.cordx+' ; '+this.cordy;
_root.buf_x = this.cordx;
_root.buf_y = this.cordy;
//trace (this.cordx);
//trace (this.cordy);
_root.centrovka();
} else if (this.valid == "0") {
outputResult.text = 'Извините, но произошла ошибка';

}

};
senddata = function(){
dataOut.x = logo_mc.ball._x;
dataOut.y = logo_mc.ball._y;
dataOut.bol = _root.bol;
//trace(_root.bol);
//trace(logo_mc.ball._x);
//trace(logo_mc.ball._y);

outputResult.text ='Обработка...';
dataOut.sendAndLoad("adres_k_php",dataIn,"POST");
//trace (dataOut);


}

<?
$cord = array(
'x'=> 31,
'y'=> 33);

echo '<p><object width="600" height="400" data="/karta.swf" type="application/x-//shockwave-flash">
<param name="quality" value="high">
<param name="src" value="/karta_t.swf">
<param name=FlashVars value="corx='.$cord['x'].'&cory='.$cord['y'].'">
<EMBED width="600" height="400" src="/karta_t.swf" FlashVars="corx='.$cord['x'].'&cory='.$cord['y'].'"> </EMBED></object></p>';

$d = array(
'x' => '0',
'y' => '0');

$found = false;


if ($_POST){

$d['x'] = $_POST['x'] ;
$d['y'] = $_POST['y'] ;

echo '&valid=1&cordx='.$d['x'].'&cordy='.$d['y'].'&';

}
/* elseif ($_POST['bol'] == 0) {
echo '&valid=2&cordx='.$d['x'].'&cordy='.$d['y'].'&';
$found = true;
break;
}*/



//echo($_POST['x']);
echo '13';
?>

примерно так

Добавлено через 6 минут
Хм, похоже я начинаю огадыватсья в чем проблема:
Я со страницы пхп загружаю флеш и пытаюсь на эту же страницу отсылать переменные, это может и вызывать баги. Хотя это пока просто догадка

Добавлено через 1 час 13 минут
Чушь говорю.

Добавлено через 20 часов 48 минут
Ну так как, есть мысли у кого?

Добавлено через 24 часа 59 минут
Кажись начинает работать. Хм, если подгружать флеш на странице пхп