Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Прием данных из PHP (http://www.flasher.ru/forum/showthread.php?t=170802)

imena 02.11.2011 09:41

Прием данных из PHP
 
Всем привет!

Объясните пожалуйста, как отсортировать полученные данные из PHP.

Код AS3:

 
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
request.url = "http://127.0.0.1/php.php?"+Math.random();
request.method = URLRequestMethod.POST;
request.data = variables;
 
................................................................................
 
 
private function completeListener(e:Event):void {
                trace(loader.data.firstName);                       
                    trace(loader.data.lastName);                       
}

PHP код:


    $id
=$HTTP_POST_VARS[id];
    
$link = mysql_connect("localhost", "root","tttt") or die("Could not connect");
    if( !
$link ) die( mysql_error() );
    
    
mysql_select_db('sampdb', $link);
    
$res = mysql_query("select * from users;");
    if(!
$res)
    {
        echo 
"db is empty";
        
mysql_close($link);
        exit();
    }
    
    
$rows = mysql_num_rows($res);
    
    for(
$i = 0; $i < $rows; $i++)
    {
        
$row = mysql_fetch_array($res);
        echo 
"firstName=".$row['first_name']."&lastName=".$row['last_name'];
    }
    
    
mysql_close($link); 

В рез-те, флэш выдает следующее:

Ivan
IvanovfirstName=Petr,PetrovfirstName=Sidr,Sidorov

причем, сам PHP выдает эту инфу в виде:

firstName=Ivan&lastName=IvanovfirstName=Petr&lastName=PetrovfirstName=Sidr&lastName=Sidorov

Не могу понять, почему у меня во flash firstName показывается, а lastName - нет.

Denis_Pryanikov 02.11.2011 10:21

Из php во flash можно передавать строку, но не массив. Пробуйте формировать строковую переменную с разделителем (например | ), а во флеше эту строку разделять через split(). Например
PHP код:

$returnVars['blabla']="1|2|3|4";
$returnString = http_build_query($returnVars); 
echo 
$returnString; 

Код AS3:

...
var fromPhp = evt.target.data.blabla;
var arr : Array = fromPhp.split("|");


carrotoff 02.11.2011 10:35

Цитата:

Пробуйте формировать строковую переменную с разделителем (например | ), а во флеше эту строку разделять через split(). Например
Очень странный подход.
А зачем по вашему придумали JSON и XML?

Denis_Pryanikov 02.11.2011 10:41

Вы считаете, что он не имеет место быть?

Genzo 02.11.2011 10:44

А если потом потребуется еще делать вложения?

goodguy 02.11.2011 11:07

Цитата:

В рез-те, флэш выдает следующее:
У меня как-то раз было такое. Причина была в том, что у меня весь код php файла, который должет был отдавать данные, был написан не в одном теге <?php ?> а в двух, т.е.
Код AS3:

<?php 
 // тут код, который принимал запрос из флеша
?>
 
<?php
 // а тут, который отдавал данные
?>

В результате (выявил это через многие мучения )) оказалось, что данные приходили с добавлением каких-то левых символов. Грубо говоря вместо lastName приходило что-то типа
Код AS3:

.   ^ 0_ lastName

Причина так и осталась для меня загадкой. Может эклипс что-то мудрила с исходниками, может сервер тупил.
Поместил и код приемник и код отдающий данные в один блок, и проблема исчезла.

Цитата:

Из php во flash можно передавать строку, но не массив.
У автора строка и передается

imena 02.11.2011 11:12

#goodguy
У меня все в одном теге... powered by dreamveaver.
Черт... всю ночь сидел... как идиот... скоро Ctrl+Enter сломается

#Denis_Pryanikov
Попробую последовать вашему совету, НО... все же хочется какой-нибудь другой метод(если конечно он есть) типа крэкс-пэкс-фэкс и оп-ля... "а ручки то вот они"...

Когда я делаю запрос на определенные данные...например передаю ID и из базы РНР вытаскивает только одно значение фестнэйм и лайстнэйм...то все отлично... а вот когда селект олл... тогда вот и возникает такая петрушка...
Лан... буду дальше разбираться... потом отпишусь
Всем спасибо

carrotoff 02.11.2011 11:27

А почему нельзя сделать по-нормальному, например, как-нибудь вот так:

PHP код:

$arrResult = array();
$sql = "SELECT * FROM `users` ORDER BY userID DESC";

if(!
$q = mysql_query($sql)){
     
$arrResult['error'] = 1;
     
$arrResult['error_message'] = "Something wrong";
     echo 
json_encode($arrResult);
     return;
}

$arrResult['error'] = 0;
while(
$res = mysql_fetch_assoc($q)){
      
$arrResult[] = $res;
}

echo 
json_encode($arrResult); 

А в клиенте просто посмотреть что приходит:

Код AS3:

private function completeListener(e:Event):void {
    trace(loader.data);                       
}


imena 02.11.2011 11:55

Я про JSON узнал пару дней назад... у меня за месяц тут и AS и PHP и MeSQL...башка лопается уже )))... теперь вот JSON...

carrotoff 02.11.2011 12:39

Ну так лучше сразу пытаться делать по фэн шую, чем набивать себе шишки печальными методами.


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

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