Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Передача переменных php <-> flash (http://www.flasher.ru/forum/showthread.php?t=133847)

MaskiShow 14.12.2009 19:08

Передача переменных php <-> flash
 
Флешка отправляет с помощью sendAndLoad запрос на сервер, и в ответе должна получать переменные

Код AS1/AS2:

request.sendAndLoad ("script.php", answer, 'POST')
 
answer.onData = function (vars) {
      if (vars == null) {...}
      else{
      _root.data = vars
        }
}

Скрипт отправляет данные с помощью "echo" :rolleyes:, и т.о. переменая vars содержит 1 строку. Как нужно отправлять данные во флеш, чтобы иметь во флешке vars.var1, vars.var2...., т.е. уже готовые переменные со значениями.
Например, нужно отправить массив во флешку. Как сделать, чтобы массив был принят во флешке именно как массив?

Kuruki 14.12.2009 19:24

Чтобы были готовые переменные используйте обработчик onLoad.
url-переменные строковые. Придется написать или найти код для парсинга строки в массив.

MaskiShow 14.12.2009 19:28

А отправлять данные, в частности, во флеш, можно только с помощью "echo"?

Kuruki 14.12.2009 19:44

не знаю, возможно стоит спросить в соответствующем разделе..
Вот этим скриптом можно воспользоваться для получения массива из строки http://json.org/json.as

mooncar 14.12.2009 20:09

Ответ сервера формируйте так:

Код:

total=50&var1=value1&var2=value2&var3=value3.. и тд.
Его, например, можно формировать в цикле, приращивая значение строковой переменной:

PHP код:

$sResult = 'total='.$total;
for (
$i = 1; i <= $total; i++) {
  
$sResult .= '&var'.$i.'='.значение;
}
print 
$sResult; 

Зависит от ваших обстоятельств, от вашего скрипта.

Получившуюся строку разбирайте в методе onLoad и загоняйте в массив:
Код AS1/AS2:

var ans:Array = new Array();
answer.onLoad = function (success:Boolean) {
  if (success) {
    for (i = 1; i <= this.total; i++)
      ans[i] = this['var' + i];
    }
  }
}

Имеем во флешке массив, заполненный строковыми распарсенными значениями. Если значение дальше нужны числовые (например, для вычислений), то строковые на лету преобразовываем:
Код AS1/AS2:

ans[i] = Number(this['var' + i]) ;


MaskiShow 18.12.2009 19:18

Вопрос по кодировке русского текста при передаче flash <> php <> база данных

Флешка отправляет содержимое текстового поля (русские буквы) скрипту, тот пишет в базу. Чтение просиходит в обратной последовательности.
В этом случае в базе отображается билеберда.

Если в скрипте делать преобразование кодировки
PHP код:

$var = iconv("utf-8", "windows-1251", $_POST['var']); 

и сделать запись в базу, то при просмотре в редакторе базы все отображается нормально.

Флешке при этом отправляется обратно-преобразованная в utf-8 последовательность.

С чем связано такое преобразование кодировки, и правильно ли я использую это преобразование? Хочется знать, как это обычно у людей делается)

mooncar 18.12.2009 19:21

Не забывайте еще про одно звено, которое может оказать воздействие на всю цепочку приема-передачи строки - кодировка самого поля БД.

MaskiShow 18.12.2009 19:27

Об этом я думал, только не знаю, где и как можно менять кодировку полей базы.
Но тогда возникает вопрос, какую обычно используют кодировку полей базы?... Ведь если прередаем html\php <> база , то никаких перекодирований не надо. Флеш же использует utf-8 (??).

mooncar 18.12.2009 19:51

Ответ на первый вопрос -
Кодировка задается при создании самой базы или таблицы.
См. тут.
Если использовать для создания phpMyAdmin, то там менять или создавать таблицы достаточно просто.

Если нужно для поля поменять, то примерно так:
Код:

ALTER TABLE `tablename` CHANGE `tel` `tel` VARCHAR( 256 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL
По поводу "обычно", не знаю. У меня везде в базах cp1251_general_ci - "Кириллический (многоязычный), регистронезависимый".
Не думаю, что делал это правильно, так как у меня и кириллица принудительно в тех флеш-проектах еще задавалась через System.useCodepage.

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

Цитата:

Флеш же использует utf-8 (??).
- как-то коряво у вас прозвучало. Флеш использует всё, что задает разработчик.

И еще. Эту тему здесь не нужно обсуждать, если что, вопрос у автора другой был. В разделе "Серверные технологии и Flash" нужно.

MaskiShow 18.12.2009 20:16

собссно я и есть автор, ...если что ;)

Да, проблема решилась - сменил редактор базы, все стало нормально (есть корректная поддержка UTF-8)


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

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