ciao a tutti...ho seguito questa guida, e funziona alla perfezione.
Qualcuno di voi usa MAMP per simulare il server in locale? perchè mettendo l'indirizzo del mio file php, a flash non arriva niente... credo sia un errore stupido di settaggi..
This is a discussion on Recuperare dati da mySQL con Flash CS3 within the Articoli e tutorials forums, part of the Flash Italiano category; Originally Posted by omar1234 Grazie Bulga ho risolto. E se ora volessi aggiornare i dati scritti e letti dal db? ...
ciao a tutti...ho seguito questa guida, e funziona alla perfezione.
Qualcuno di voi usa MAMP per simulare il server in locale? perchè mettendo l'indirizzo del mio file php, a flash non arriva niente... credo sia un errore stupido di settaggi..
risolto...errore stupido come pensavo!
meraviglia
Sto creando un guestBook, per un'applicazione in AS3.0, ho seguito questo tutorial per tirarmi fuori i miei messaggi dal database. Soltanto che sono incappato in un bel problema, che non riesco a risolvere.
Premesso che il file PHP restituisce il corretto file XML e lo passa correttamente a flash, verificato perchè ho fatto un trace del file XML che mi viene generato ed è corretto.
Qui di sotto il codice del file xml (ovviamente senza i CDATA)...
per inserire in un array come spiegato qua ogni singolo messaggio, creo un oggetto per ogni messaggio, e gli assegno le proprietà: id, name, message, date, in questo modo:PHP Code:<messages>
<message>
<id><![CDATA[2]]></id>
<name><![CDATA[Administrator]]></name>
<messaggio><![CDATA[Messaggio di prova]]></messaggio>
<data><![CDATA[11]]></data>
</message>
<message>
<id><![CDATA[3]]></id>
<name><![CDATA[Administrator]]></name>
<messaggio><![CDATA[Messaggio di prova]]></messaggio>
<data><![CDATA[11]]></data>
</message>
<message>
<id><![CDATA[4]]></id>
<name><![CDATA[Administrator]]></name>
<messaggio><![CDATA[Messaggio di prova]]></messaggio>
<data><![CDATA[11]]></data>
</message>
<message>
<id><![CDATA[5]]></id>
<name><![CDATA[Administrator]]></name>
<messaggio><![CDATA[Reset]]></messaggio>
<data><![CDATA[11]]></data>
</message>
<message>
<id><![CDATA[6]]></id>
<name><![CDATA[prova]]></name>
<messaggio><![CDATA[prova reset]]></messaggio>
<data><![CDATA[11]]></data>
</message>
<message>
<id><![CDATA[7]]></id>
<name><![CDATA[dsfsdffsd]]>
</name>
<messaggio><![CDATA[Prova]]></messaggio>
<data><![CDATA[12/05/10 00:43]]>
</data>
</message>
</messages>
Il problema è che l'applicazione si blocca e dopo mi da l'errore di TimeOut una volta passati i canonici 15 secondi di tempo massimo per l'esecuzione degli script. Ho provato ad impostare un tempo di 10 minuti, ma tuttavia dopo 10 minuti schianta.Code:for(var i:int=0;i < n;i++) { var obj:Object=new Object(); for(var j:int=0;j < node.childNodes[i].childNodes.length;j++) { if(j==0) obj.id=int(node.childNodes[i].childNodes[j].firstChild.nodeValue); if(j==1) obj.name=node.childNodes[i].childNodes[j].firstChild.nodeValue; if(j==2) obj.message=node.childNodes[i].childNodes[j].firstChild.nodeValue; if(j==3) obj.date=node.childNodes[i].childNodes[j].firstChild.nodeValue; } message_array.push(obj); }
Ho perfino provato a fare un trace di ogni valore all'interno del ciclo, una volta che va in timeout l'output dei trace mi viene stampato, ma soltanto del primo record.
Che succede? Come posso risolvere? o.O
Se ti dice timeout quasi sicuramente è perchè hai un loop infinito che flash blocca automaticamente per ovvi motivi, rivedi bene il codice.
Ho fatto il trace di n e di i e sono corretti.
Ho anche provato a impostare nel ciclo i<2 e j <3 ma il problema persiste.. non ho altri cicli, quindi come può andare in loop? o.O
Cmq da casa metto il codice completo della funzione...
Bene attendiamo il codice completo, sicuro che flash comunichi correttamente con php?
Questo è l'output che riceve Flash, ed è corretto:Code:private function LoadXML():void { var loader:URLLoader = new URLLoader(); loader.addEventListener(Event.COMPLETE,completeHandler); var r:URLRequest = new URLRequest('http://www.fotodisegnando.com/vichy/php/getMessages.php') try { loader.load(r); } catch(error:Error) { trace('Unable to load file: getMessages.php') } } private function completeHandler(evt:Event):void { var result:XML = new XML(evt.target.data); var myXML:XMLDocument = new XMLDocument(); myXML.ignoreWhite = true; myXML.parseXML(result.toString()); var node:XMLNode=myXML.firstChild; var n:int = node.childNodes.length; //trace(myXML); for (var i:int=0; i < 2; i++) { var obj:Object = new Object(); trace('n: ' + node.childNodes[i].childNodes.length); for (var j:int=0; i < node.childNodes[i].childNodes.length; j++) { if(j==0) { obj.id = int(node.childNodes[i].childNodes[j].firstChild.nodeValue); trace('message id: ' + obj.id); } if(j==1) { obj.name = node.childNodes[i].childNodes[j].firstChild.nodeValue; trace('Author Name: ' + obj.name); } if(j==2) { obj.message = node.childNodes[i].childNodes[j].firstChild.nodeValue; trace('Messaggio: ' + obj.message); } if(j==3) { obj.date = node.childNodes[i].childNodes[j].firstChild.nodeValue; trace('Data Inserimento: ' + obj.date); } } message_array.push(obj); }
Grazie per l'aiuto.. mi ci sto fumando il cervello.. anche perchè passo in ufficio 8 ore a programmare, poi torno a casa e borda di nuovo -.-' son cotto come un fegatello!PHP Code:<messages>
<message>
<id>2</id>
<name>Administrator</name>
<messaggio>Messaggio di prova</messaggio>
<data>11-05-10</data>
</message>
<message>
<id>3</id>
<name>Administrator</name>
<messaggio>Messaggio di prova</messaggio>
<data>11-05-10 2323:40</data>
</message>
<message>
<id>4</id>
<name>Administrator</name>
<messaggio>Messaggio di prova</messaggio>
<data>11/05/10 23:41</data>
</message>
<message>
<id>5</id>
<name>Administrator</name>
<messaggio>Reset</messaggio>
<data>11/05/10 23:47</data>
</message>
<message>
<id>6</id>
<name>prova</name>
<messaggio>prova reset</messaggio>
<data>11/05/10 23:47</data>
</message>
</messages>
ciao,
... il "loop" è dovuto al fatto che nel for interno confronti la i e non la j.
Puoi anche creare le proprietà dell'oggetto in maniera generalizzata, evitando così gli if per ogni tag ...
Code:function completeHandler(evt:Event):void { // ... var nRows :uint; var nItems :uint; var XMLRow :XML; var obj :Object; var propName :String; // ... var XMLResult:XML = new XML(evt.target.data); var myXML :XMLDocument = new XMLDocument(); myXML.ignoreWhite = true; myXML.parseXML(XMLResult.toString()); XMLResult = XML(myXML); nRows = XMLResult.children().length(); for (var i:uint=0; i < nRows; i++) { XMLRow = XMLResult.children()[i]; nItems = XMLRow.children().length(); for (var j:uint=0; j < nItems; j++) { obj = new Object(); // ... CREA LA PROPRIETA' CORRISPONDENTE AL TAG propName = XMLRow.children()[j].name(); // ... ASSEGNA IL VALORE obj[propName] = XMLRow.children()[j]; // ... INSERISCI OGGETTO IN ARRAY message_array.push(obj); trace("objArray["+ String(i) + "]." + propName + "=" + obj[propName]); } } } // ...
Bookmarks