(tratto dal sito: http://www.liviogiordano.it - scritto da Livio Giordano)

Estrazione dati da un DB MysSQL e visualizzazione in un movie Flash -

In questo articolo vedremo come estrarre dei dati da un database MySQL con PHP e visualizzarli in un movie Flash.


Requisiti:

- Flash MX o superiore;
- Server (consigliato Apache);
- Modulo PHP;
- Database MySQL;

Potete trovare Apache, il modulo PHP e il database MySQL nel pacchetto gratuito di Easyphp (www.easyphp.org).

Prenderemo in considerazione l'esempio di un database di una generica agenzia, che contiene una tabella chiamata "agenti", nella quale è memorizzato l'elenco di tutti i dipendenti dell'agenzia (id - primary key, nome, cognome e data di nascita). Andremo a prelevare i record di questa tabella e li mostreremo dentro alcuni campi di testo dinamici di un movie Flash. Sarà semplice in seguito adattare questo esempio ai propri scopi.

Il database

All'interno del file zip troverete il dump del database utilizzato per l'esempio. La tabella sarà come quella rappresentata nell'immagine sotto:



Il codice PHP

Il codice PHP utilizzato serve per estrarre i dati dal database con una query, e mandarli in output in formato url-encoded, per poter successivamente essere letti da ActionScript.

Ecco il codice PHP:

<?php

// dati per la connessione al database

$db_host = "localhost";
$db_user = ""; 
$db_password = "";
$db_name = "agenzia";

// connessione al database

$db = mysql_connect ($db_host, $db_user, $db_password);
$db_forum = mysql_select_db ($db_name, $db);

$query = "SELECT `nome`, `cognome`, `datanascita` FROM `agenti` ORDER BY `cognome`";

$query_results = mysql_query($query);
$i = 0;

while($fetch = mysql_fetch_array($query_results))
     {
     $i++;
     echo "&nome".$i."=".$fetch['nome']."<br>";
     echo "&cognome".$i."=".$fetch['cognome']."<br>";
     echo "&datanascita".$i."=".$fetch['datanascita']."<br>";
     }

if($i)
  {
  echo "&i=".$i;
  echo "&ok=1";
  echo "&stop=1";
  }

else
   {
   echo "&ok=0";
   echo "&stop=1";
   }

?>

 

Ricordate di inserire i dati per la connessione al database (host, nome utente, password e nome del database). Il codice PHP si collega al database, estrae i record, e li manda in output in formato url-encoded. Le variabili "ok" e "i" ci serviranno rispettivamente per controllare che la query abbia restituito almeno un record, ed per conoscere il numero esatto dei record restituiti.

Il codice ActionScript ed il movie Flash

Il codice ActionScript, associato ad un pulsante, si occuperà di eseguire lo script PHP, prelevarne i dati, e mostrarli nel movie.

Ecco il codice ActionScript:

on(release)
{
loader = new loadVars();
loader.load("script.php");
loader.onLoad = function(success) {
if(success)
  {
  if(this.ok)
    {
    _root.nome.htmlText = "";
    _root.cognome.htmlText = "";
    _root.datanascita.htmlText = "";
    for(var j = 1; j <= this.i; j++)
       {
       _root.nome.htmlText += eval("this.nome" + j);
       _root.cognome.htmlText += eval("this.cognome" + j);
       _root.datanascita.htmlText += eval("this.datanascita" + j);
       }
    _root.output.text = "ok";
    }
  else
     {
     _root.nome.htmlText = "";
     _root.cognome.htmlText = "";
     _root.datanascita.htmlText = "";
     _root.output.text = "error";
     }
  }
}
}


Un messaggio di conferma o di errore segnalerà l'esito dell'operazione di estrazione e visualizzazione dei dati.
 

Inserimento dati in un db MySQL da Flash con PHP  -

Inserimento dati in un db MySQL da Flash con PHP

In questo articolo vedremo come inserire dei dati in un database MySQL direttamente da un movie Flash, utilizzando PHP come linguaggio di raccordo tra il filmato e la base di dati.

Requisiti: Potete trovare Apache, il modulo PHP e il database MySQL nel pacchetto gratuito Easyphp (www.easyphp.org).

Princìpi generali di funzionamento

Anche in questo caso prenderemo in considerazione un esempio generico, che potrà poi essere facilmente adattato a qualsiasi esigenza.
Lo spunto ci viene offerto da un form per l'inserimento di alcuni dati personali da memorizzare in un database.

Il form

Ci serviremo di ActionScript per catturare i dati inseriti dall'utente e, attraverso un oggetto loadVars, inviarli ad un apposito script PHP, che avrà il compito di inserire i dati nel db e restituire una risposta contenente l'esito dell'operazione.

Il database

Ci serviremo di un db che chiameremo "dbtest", all'interno del quale creeremo una tabella con nome "utenti", sulla quale andremo poi ad effettuare gli inserimenti.
All'interno del file ZIP allegato all'articolo troverete il dump del database utilizzato per l'esempio.
La tabella sarà la stessa di quella rappresentata nell'immagine sotto:

Il database MySQL
 

Il codice ActionScript

Per inviare i dati del form allo script PHP ci serviremo dei metodi della classe loadVars. Tale oggetto ci servirà anche per ricevere l'esito dell'operazione.
Ecco il codice AS associato al pulsante di invio dati:

on (release)
{
loader = new loadVars();
receiver = new loadVars();

loader.nome = _level0.nome;
loader.cognome = _level0.cognome;
loader.indirizzo = _level0.indirizzo;
loader.cap = _level0.cap;
loader.citta = _level0.citta;
loader.telefono = _level0.telefono;
loader.email = _level0.email;

receiver.onLoad = function (ok)
{
delete this.onLoad;

if(ok)
{
if(receiver.error == "1"){_root.output.text = "Errore inserimento dati";}
else{_root.play();}
}

else
{
_root.output.text = "Errore inserimento dati";
}

};

loader.sendAndLoad("script.php", receiver, "POST");
}

Abbiamo creato due oggetti loadVars, uno per inviare i dati, ed un altro per ricevere la risposta. E' anche possibile utilizzare un unico oggetto per entrambe le operazioni, ma un oggetto apposito per la ricezione ci permetterà di evitare possibili errori dovuti a variabili che hanno lo stesso nome.
Definiamo quindi una funzione per l'evento onLoad, che verrà attivata quando il caricamento dello script PHP sarà utlimato. Il codice di questa funzione (che verrà poi cancellata con delete) si occuperà di controllare che il caricamento dello script abbia avuto successo, e che i dati siano stati inseriti correttamente nel database. Tali controlli vengono effettuati sulla base delle risposte stampate dal codice PHP.
Per caricare il codice non ci resta quindi che utilizzare il metodo sendAndLoad, che invia tutte le variabili presenti nella classe loader tramite POST, e inserisce la risposta nell'oggetto receiver appositamente creato.
Per farsi un'idea del contenuto effettivo dei due oggetti, è possibile effettuare un trace sul metodo toString() di ciascun oggetto.
Nel caso in cui tutte le operazioni siano andate a buon fine, il filmato si sposterà sul frame 2 e verrà visualizzato un messaggio di conferma; se invece si fosse verificato qualche errore, comparirà un avvertimento in rosso sul form.

Il codice PHP

Il codice necessario ad inserire i dati nel db è molto semplice. Diamo prima uno sguardo per poi vedere cosa effettivamente avviene:

<?php

// dati per la connessione al database

$db_host = "localhost";
$db_user = "";
$db_password = "";
$db_name = "dbtest";

// connessione al database

$db = mysql_connect ($db_host, $db_user, $db_password);
$db_forum = mysql_select_db ($db_name, $db);

// query di inserimento

$query = "INSERT INTO `utenti` (nome, cognome, indirizzo, cap, citta, telefono, email, data)
VALUES ('".$_POST['nome']."', '".$_POST['cognome']."', '".$_POST['indirizzo']."', '".$_POST['cap']."', '".$_POST['citta']."', '".$_POST['telefono']."', '".$_POST['email']."', '".date('Y-m-d H:i:s')."')";

// esecuzione della query

$query_results = mysql_query($query) or die("&error=1");

echo "&stop=1";

?>


La prima parte comprende le istruzioni per stabilire la connessione al database (che deve essere già stato creato in precedenza). E' importante quindi inserire i dati per la connessione (host, nome utente, password e nome del db).
Il passo successivo consisterà nel formattare la query con i dati dell'array POST che sono stati inviati da sendAndLoad, ed eseguirla. Nel caso l'inserimento non fosse andato a buon fine, verrà stampato (nel formato url-encoded) il valore &error=1, che sarà quindi inviato come risposta al movie. L'ultima istruzione, che stampa &stop=1 (sempre in formato url-encoded), ha un duplice scopo: serve come 'terminatore' per la variabile precedente, per evitare il concatenamento con caratteri come n e r, ed inoltre funge da unico argomento di ritorno nel caso l'inserimento fosse andato a buon fine; infatti il controllo in AS per accertare l'esito dell'operazione prevede che venga ritornata almeno una variabile.