Mi sono interessato molto alla guida sulle applicazioni Flash ed XML di Enrico Lai presente nel sito.Ho attivato sul mio PC l’IIS in modo da poter testare anche gli script Asp e mi sono messo al lavoro seguendo passo passo quanto scritto nella guida.
La parte che mi crea problemi è quella inerente il passaggio dal caricamento dei dati in Flash direttamente da XML al caricamento tramite lo script Asp (in pratica il passaggio dall’es7.fla all’es8.fla della guida).
Il file XML che riesco a caricare senza problemi è il seguente:
Nome file “orari_bf.xml”
<volo id="AZ1570"/> <partenza h="06:45">Cagliari</partenza> <arrivo h="07:50">Roma</arrivo>
<volo id="AZ1572"/> <partenza h="07:20">Cagliari</partenza> <arrivo h="08:25">Roma</arrivo>
<volo id="AZ1578"/> <partenza h="09:05">Cagliari</partenza> <arrivo h="10:10">Roma</arrivo>
<volo id="AZ1574"/> <partenza h="10:50">Cagliari</partenza> <arrivo h="11:55">Roma</arrivo>
<volo id="AZ1568"/> <partenza h="12:00">Cagliari</partenza> <arrivo h="13:05">Roma</arrivo>
<volo id="AZ8111"/> <partenza h="12:00">Cagliari</partenza> <arrivo h="13.00">Roma</arrivo>
<volo id="AZ1576"/> <partenza h="13:25">Cagliari</partenza> <arrivo h="14:30">Roma</arrivo>
Per farlo si utilizza il seguente script As:
/////////////////////////////////////////////////////////////////////////
///// ENRICO LAI Programmazione Action Script
///// http://www.enricolai.com
///// info@enricolai.com
///// Tutorial realizzato per Flash-mx.it . Tutti i diritti riservati.
///// Vietata la riproduzione anche parziale senza autorizzazione scritta
/////////////////////////////////////////////////////////////////////////
filexml = "orari_bf.xml";
ApriXML();
function ApriXML () {
mioxml = new XML();
myarray = new Array();
mioxml.load(filexml);
mioxml.onLoad = ElaboraXML;
function ElaboraXML (success) {
if (mioxml.loaded) {
myarray = mioxml.childNodes;
Dati();
delete myarray;
delete mioxml;
}
};
};
// Funzione che prende i dati XML e li mette in degli Array
function Dati () {
// Array che contengono i Dati -----------------------
idvolo = new Array();
hpartenza = new Array();
harrivo = new Array();
partenza = new Array();
arrivo = new Array();
// ---------------------------------------------------
for (k=0; k<=myarray.length; k++) {
if (myarray[k].nodeName == "volo") {
idvolo.push(myarray[k].attributes.id);
} else if (myarray[k].nodeName == "partenza") {
hpartenza.push(myarray[k].attributes.h);
partenza.push(myarray[k].childNodes.toString());
} else if (myarray[k].nodeName == "arrivo") {
harrivo.push(myarray[k].attributes.h);
arrivo.push(myarray[k].childNodes.toString());
}
};
};
Il risultato è che nel debugger si vedono gli array creati popolarsi con i dati del file xml.
Nel passaggio successivo, utilizzando il db presente nella guida e il seguente script Asp:
Nome file “crea_db.asp” (che, come ho potuto testare, crea effettivamente un file xml identico a orari_bf.xml):
<%
Const adOpenKeyset = 1
Const adLockReadOnly = 1
' Stringa di Connessione al Data Base con la password che viene specificata
' Modificate se necessario il percorso del Data Base sostituendo a "/guidaflash" il nome della vostra cartella che conterrà il DB
StrConnessione = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.MapPath("/guidaflash") & "\db.mdb"
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open StrConnessione
' Selezioni dalla tabella voli i dati ordinati in modo crescente in base alla ora di partenza
SQL = "SELECT * FROM voli order by hpartenza asc"
' Creo il RECORD SET che contiene tutti i dati selezionati dal Data base
Set rs = Server.CreateObject("ADODB.RecordSet")
rs.Open SQL, Conn, adOpenKeyset,adLockReadOnly
' Eseguo un ciclo su tutti i dati del Recod set e creo il documento XML in output con i vari TAG
Do while not rs.eof
Response.Write "<volo id=""" & rs("idvolo") & """/><partenza h=""" & rs("hpartenza") &""">" & rs("partenza") & "</partenza><arrivo h=""" & rs("harrivo") &""">"& rs("arrivo") &"</arrivo>"
rs.movenext
Loop
rs.close
set rs=nothing
Conn.Close
set Conn=nothing
%>
E sostituendo nello script As la riga:
filexml = "orari_bf.xml";
con la riga:
filexml = "crea_db.asp";
Si dovrebbe, secondo quanto afferma la guida, ottenere il medesimo risultato. In realtà nel debbuger vedo comparire solo i nomi degli array creati, ma essi non vengono popolati, perché l’array principale myarray, nel secondo tentativo, risulta avere lunghezza 0.
Preciso che tutti i file sopra menzionati si trovano nella medesima cartella e quindi non ci dovrebbero essere problemi di percorsi errati.
Spero di essere stato sufficientemente chiaro, oltre che certamente prolisso, ma il problema mi assilla e vorrei davvero capire cosa non va.
Ringrazio fin d’ora per il tempo che potrete dedicarmi.
Ciao e grazie ancora

Rispondi quotando