Come faccio a caricare variabili in FlashMX dal PHP ?
Se avete interagito con i files di testo, noterete come questa parte sia molto piu' semplice di quanto crediate.
Se non lo avete fatto invece, considerate che il FlashMX accetta file contenenti stringhe di questo tipo:
nome=andr3a&cognome=coniltre&anni=25
Per una questione di comodita', metti caso che le variabili siano 34534, possiamo inviarle a FlashMX anche in questo modo
&nome=andr3a&
&cognome=coniltre&
&anni=25&
N.B. questo metodo non e' preferibile all'altro, perche' invia delle variabili vuote ed inutili al FlashMX. E' comunque funzionante e secondo me in certi casi indispensabile.
Come usare il PHP
Se avete capito la sintassi da utilizzare, un file di questo tipo non dovrebbe sembrarvi strano o incomprensibile:
file prova.php
Codice PHP:
<?php
mysql_connect("localhost","user","pass");
mysql_select_db("database");
$query = mysql_query("select * from tabella");
if(mysql_num_rows($query)>0) {
$mostra = mysql_fetch_array($query);
$output = "&nome=".$mostra["nome"]."&\n";
$output .= "&cognome=".$mostra["cognome"]."&\n";
$output .= "&anni=".$mostra["anni"]."&";
}
echo nl2br($output);
?>
Se lanciaste il file vedreste questo:
&nome=andr3a&
&cognome=coniltre&
&anni=25&
Ci siamo quindi creati a tutti gli effetti un output identico a quello che saremmo andati a scrivere in un file di testo, effettuando pero' tutti i nostri porci comodi in php per rilasciare poi l'output solo a fine elaborazione.
E' importante scrivere codice il piu' pulito possibile ed evitare di far inviare al PHP dei warnings, messaggi che potrebbero bloccare il vostro swf facendovi impazzire.
Altra cosa importante e' scrivere nel modo piu' leggero possibile, ovvero cercare di rinunciare a qualunque cosa possa far aumentare di un singolo bit i vostri files in php.
Quindi invece di un...
Codice PHP:
if($cosodice!="") {
$output .= "coso ha detto ".$cosodice;
}
else {
$output .= "non ha detto niente";
}
// e' di gran lunga preferibile una sintassi di questo tipo
$out=$cd!=""?"coso ha detto ".$cd:"non ha detto niente";
Quindi risparmiate ovunque per avere interattivita' il piu' veloce possibile
Come usare il FlashMX
Una volta impostato ad hoc e testato il vostro file.php [ se richiedete valori in get testate anche quelli appendendo alla pagina cio' che andreste ad appendere all' swf ]
passimao al FlashMX.
Ci sono 3 metodi per caricare:
1 - loadVars
2 - loadVariablesNum
3 - LoadVariables
Io vi scrivo solo il primo perche' gli altri sono metodi "vecchi" ed hanno il vizio maledetto di inviare comunque variabili interne all' swf al PHP anche se non glielo abbiamo richiesto.
Nel keyframe delle action di FlashMX scriveremo
Codice PHP:
// mi creo una variabile utile per effettuare debug in fase di sviluppo
var percorso = new String("http://localhost/provainterazione/");
// dichiaro le variabili utili
var nome = new String();
var cognome = new String();
var anni = new String();
// ora preparo il caricamento del file php
var carica = new LoadVars();
carica.onLoad = function(success) {
if(success) {
_root.nome = this["nome"];
_root.cognome = this["cognome"];
_root.anni = this["anni"];
trace(nome+" - "+cognome+" - "+anni);
}
else {
trace("Errore nel caricamento file!");
}
}
carica.load(percorso+"prova.php");
Avremmo anche potuto utilizzare il metodo GET per caricare e inviare allo stesso tempo qualcosa al PHP
Esempio:
carica.load(percorso+"prova.php?cerca="+_root.vari abile);
Il file php avrebbe ricevuto la variabile $_GET["cerca"] contenente il valore desiderato.
N.B.
Per evitare problemi di cache sul file php, trattato da MX come se fosse un file di testo, ricordatevi di mettere un header tipo questo
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
ad ogni file che andrete a caricare.