Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   Flash->PHP->MySQL->PHP->XML->FLash (http://www.flasher.ru/forum/showthread.php?t=140865)

Blendor 09.06.2010 19:11

Flash->PHP->MySQL->PHP->XML->FLash
 
Я работал с пхп, но я не очень понимаю логику этого процесса. Покопался в гугле, но либо плохо копался, либо туго соображаю , таки не понял ничего. В FAQе тоже почитал но там всё очень кратко.

С помощью вот этого
Код AS3:

        public function formSubmit(e:Event) {
                var variable:URLVariables=new URLVariables();
                  variable.author1=this.inputField.text;
                var urlreq:URLRequest=new URLRequest();
                  urlreq.url="makeXML.php";
                  urlreq.data=variable;
                  urlreq.method=URLRequestMethod.POST;
                var loader:URLLoader=new URLLoader(urlreq);
                  loader.addEventListener(Event.COMPLETE, onComplete);
                  loader.dataFormat = URLLoaderDataFormat.VARIABLES;
                  loader.load(urlreq);                       
        }

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

Дальше в makeXML.php ловим переменную и делаем запрос
PHP код:

$authorName=$_POST['author1'];
if(
$authorName) {
        
$query="update book set author1='$authorName' where id=1";
                
$result=mysql_query($query,$link) or die (mysql_error());


Потом в этом же файле далее делаем SELECT и выбираем к примеру данные о книге в которую мы внесли изменения. Записываем это в XML файл и в onCopmlete перечитываем XML файл.
Проблема в первой части , ничего в БД не меняется. Мне нужно при нажатии на кнопку перейти на makeXML.php? Или оно само както?:o

membrilius 09.06.2010 21:05

а у вас конект к базе осуществятся, база выбирается? ..

Код:

update book set author1=$authorName where id=1
Вы обновляете автора только первой книги всегда? )

и тут скорее всего вылезает ошибка надо кавычки ставить.

Код:

UPDATE book SET author1='".$authorName."' WHERE id=1

Blendor 09.06.2010 23:56

Вложений: 1
Цитата:

Сообщение от membrilius (Сообщение 914334)
а у вас конект к базе осуществятся, база выбирается? ..

Да , вот пхп файл и *.as файл.
Если не трудно объясните на пальцах как осуществить запрос и получить ответ без перехода на другую страницу , и правильно ли я всё пытаюсь делать? :)

membrilius 10.06.2010 02:09

с AS3.0 ничего советовать не буду, не очень дружу.

на сколько я понял, Вам нужно из флешки отправить имя автора в PHP скрипт, который его зачем-то обновит и выдаст информацию об обновлённой книге, во флеху, в виде XML.

Для начала Вам нужно ещё отправлять ID книги которой вы хотите что-то обновить. Так как сейчас у Вас стоит фиксировано "id=1"

Вообщем в PHP:

делаем коннект к БД,
выбираем базу (можно базу указывать четвертым параметром в mysql_connect, т.е без mysql_select_db обойтись),
принимаем "$_POST['author1']"
принимает ID книги "$_POST['id_book']" (например),
обновляем,
делам выборку по тому что мы обновили (так же по ID)
Дальше Вы создаете файл XML, это не нужно! Просто формируете XML (с заголовком и т.д) и отправляете во флеш (просто печать echo).
Флеха его ловит и уже обрабатывайте.

И не забываем про кавычки в запросах.

Если что-то не работает значит PHP выдаёт ошибку.. в свой Флешке Вы её не увидите, для проверки можно просто написать форму HTML и отправлять формой и смотреть, что за ошибка и где.

Добавлено через 3 минуты
хотя можно и без формы.. просто задавайте прямо значения для $_POST['@#$'] и запускайте скрипт.

Blendor 10.06.2010 09:31

С пхп скриптом всё нормально, сам по себе он всё правильно делает, но он видимо либо не запускается, либо не получает данные из флэшки . Но вроде код у меня как и в других примерах :(

И если я добавляю в обработчик loadеr'а
Код AS3:

loader.addEventListener(Event.COMPLETE, onComplete);
 
public function onComplete(e:Event) {
                var variables:URLVariables = new URLVariables( e.target.data );
                trace("Complete");
                this.textBox.text=e.target.data.authorName;
        }

А в пхп файле
PHP код:

echo($authorName); 

То мне выдаёт
Код:

TypeError: Error #2007: Параметр text не должен быть равен нулю.
        at flash.text::TextField/set text()
        at MyTextBox/onComplete()
        at flash.events::EventDispatcher/dispatchEventFunction()
        at flash.events::EventDispatcher/dispatchEvent()
        at flash.net::URLLoader/onComplete()


etc 10.06.2010 11:39

Вы когда закончите, скажите, где лежит скрипт обновления базы :)

Blendor 10.06.2010 18:13

У меня всё в одной папке лежит, пути все верные.

-De- 10.06.2010 18:34

URL дайте! Я снесу к аллахам sql иньекцией вам базу и может ещё что-нить всё поправлю.
По теме - похоже последний скрипт работал бы лучше, если убрать .authorName; =)
Откуда он там и как должен работать - загадка.

Blendor 10.06.2010 18:49

Цитата:

Сообщение от -De- (Сообщение 914525)
По теме - похоже последний скрипт работал бы лучше, если убрать .authorName; =)
Откуда он там и как должен работать - загадка.

Это я пробовал по разному писать, когда сохранил в таком виде я и кинул код сюда. Но с этим или просто
Код AS3:

this.textBox.text=variables.data;

всё равно ничего не меняется.

Я где-то туплю но я понятия не имею где :(

-De- 10.06.2010 19:08

Как variables.data должны понять, что у вас есть что-то с именем authorName?
Я имел в виду
Код AS3:

this.textBox.text=e.target.data

Это будет то, что отдает пхп.
Не путайте variables и e.target.data


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

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