PDA

Volledige versie bekijken : AS3 en PHP


wabsta
%Europe/Berlin %689 %2010, 16:33
Hallo, hier mijn eerste post op dit forum.
Ik wist niet zeker of ik dit in deze sectie moest zetten, of in de PHP sectie, maar heb het dus maar hier gedaan.

Ik heb namelijk een vraagje.
Met AS3, probeer ik een inlogsysteempje te maken, die via PHP verbind met een MySQL database.

Het php/mysql "uitlezen" lukte wel, maar als ik nu dus iets mee probeer te sturen, doet hij 't niet meer!

Dit is mijn PHP code:
<?php



$link = mysql_connect('*knip*', '*knip*', '*knip*');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db("*knip*");
$result = mysql_query("SELECT naam,hptest,age,dag,slaap,verveling,wc,honger,pass word FROM creatures WHERE naam = '".$_POST['username']."'");
if (!$result) {
echo 'Could not run query: ' . mysql_error();
exit;
}
$row = mysql_fetch_row($result);
$returnVars = array();
$returnVars['naam'] = $row[0];
$returnVars['age'] = $row[2];
$returnVars['honger'] = $row[7];
$returnVars['wc'] = $row[6];
$returnVars['slaap'] = $row[4];
$returnVars['dag'] = $row[3];
$returnVars['verveling'] = $row[5];
$returnVars['hptest'] = $row[1];
$returnVars['test'] = $row[8];
$returnString = http_build_query($returnVars);

//send variables back to Flash
echo $returnString;

?>Dat gaat goed. Als ik nu met een naam inlog die bestaat in de database, returned deze:
naam=TamaTest&age=10&honger=100&wc=100&slaap=100&dag=10&verveling=100&hptest=100&test=testMaar nu wil ik in flash dus dit kunnen doen:
var naamTemp = evt.target.data.naam;
var ageTemp = evt.target.data.age;
var hpTemp = evt.target.data.hptest;
var hongerTemp = evt.target.data.honger;
var slaapTemp = evt.target.data.slaap;
var wcTemp = evt.target.data.wc;
var vervelingTemp = evt.target.data.verveling;Wat ook werkte, toen ik de method niet POST had, maar GET.

Als ik dit nu probeer, krijg ik deze error:
ReferenceError: Error #1069: Kan eigenschap naam niet vinden bij String en er is geen standaardwaarde.
at MethodInfo-93()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at flash.net::URLLoader/onComplete()Hoe mijn code van flash er in het totaal uitziet:
public function Phphandler(username:String, password:String)
{
var var_load:URLLoader = new URLLoader;
var URL_request:URLRequest = new URLRequest("http://fapsta.com/mysql.php?dummy=" + new Date().getTime());
URL_request.method = URLRequestMethod.POST;
var login_data:String = "username=" + username
+ "&password=" + password;

var URL_vars:URLVariables = new URLVariables(login_data);
URL_vars.dataFormat = URLLoaderDataFormat.VARIABLES;

URL_request.data = URL_vars;
var_load.load( URL_request );
var_load.addEventListener(Event.COMPLETE, loginHandler );



function loginHandler(evt:Event) {

trace(evt.target.data.naam);
}
}

Ik ben wel net, nouja, maar een aantal weekjes bezig met flash, voor school. En met het PHP proberen te combineren ben ik vanochtend mee begonnen. Dus waarschijnlijk doe ik gewoon iets heel doms fout hoor.

Maarja, zou iemand mij een beetje op weg kunnen helpen?

RubenElzerman
%Europe/Berlin %857 %2010, 20:35
Je krijgt een string als evt.target.data geen object met daarin alle dingen afzonderlijk. Je zou de string kunnen opslitsen bij elk & teken en dan weer de var naam afsplitsen van de waarde.

Volgens mij kan je beter NetConnection gebruiken
Zie:
http://www.gotoandlearn.com/play?id=90

wabsta
%Europe/Berlin %966 %2010, 23:11
Ah, dankje, dat was het inderdaad.
Het is mij gelukt om de string te splitsen, maar dat is niet echt ideaal, sinds ik dan inderdaad ook nog de waarde's en namen moet splitsen.

Zend lijkt inderdaad wel handig, maar sinds ik niet zo veel tijd meer heb voor mijn project ingeleverd moet worden, is dit ook niet echt een heeeeeeeele goeie optie.

Vraagje, is het mogelijk om de string zegmaar, alsnog als object met allerlei dingen te laten worden?
Want als ik het op die andere manier deed, werkte die dus wel.

jaspermuts
%Europe/Berlin %972 %2010, 23:20
Vraagje, is het mogelijk om de string zegmaar, alsnog als object met allerlei dingen te laten worden?

Ja, met xml is dat verreweg het handigste (zonder tussenkomst van AMF dan): laat je PHP een string als xml echo-en, dan kan flash dat met behoud van structuur inlezen. Het is dan wel niet niet direct een een array met objecten, maar een xml met nodes, maar die kun je natuurlijk wel eenvoudig omzetten.

wabsta
%Europe/Berlin %607 %2010, 14:34
Ah, hartelijk dank! Het is gelukt, met XML erbij dus :)

EDIT:
Oh, ben iets te vroeg gaan juichen:
TypeError: Error #1034: Afgedwongen typeomzetting is mislukt: kan "<data>

<naam>Tama</naam>

<age>0</age>

<honger>100</honger>

<wc>100</wc>

<slaap>100</slaap>

<dag>100</dag>

<verveling>100</verveling>

<hp>100</hp>

<password>test</password>

</data>



" niet omzetten in XML.
at MethodInfo-96()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at flash.net::URLLoader/onComplete()

EDIT2:
Ben toch maar de string gaan ontleden, en het werkt nu. Nogmaals, bedankt :)