Salutare dragi impatimiti ai Web-ului!
Primult meu articol pe Web Design Box (un site de unde am invatat multe alte lucruri) va fi despre Flash Remoting si AMFPHP (basic).
Acest articol se adreseaza celor care vor sa foloseasca Flash cu MySQl si sa nu scrie foarte multe lucruri in PHP.
Cu ce ne vom juca azi:
- Macromedia Flash 8
- AMFPHP
- MySQL
Articolul va avea 3 sectiuni principale:
- Configurarea / instalarea AMFPHP-ului
- Codarea in Flash inline
1. Configurarea / instalarea AMFPHP-ului
Pentru a configura AMFPHP aveti nevoie de un server localhost sau daca aveti access de un web server al vostru il puteti instala acolo. Pentru a download-a AMFPHP intrati pe site-ul AMFPHP la sectiunea Download. Dupa ce ati descarcat AMFPHP-ul pe calculatorul vostru si l-am dezarhivat copiati tot continului lui (amf-core, browser, services, etc.)in htdocs (daca folosit xampp) sau www (daca folositi wamp) sau unde aveti voi localhost-ul pe calculatorul vostru, in folderul flashservice (pe care-l creati). Apoi accesati http://localhost/flashserivce/gateway.php O sa vedeti un mesaj ca instalarea a reusit, daca nu primiti aceasta confirmare, mai parcugeti odata pasi mai sus enumerati. Asta ar fi la configurarea / instalarea AMFPHP-ului.
2. Codare Flash inline
Intai de a coda in flash (mai asteptati putin) trebuie sa scriem putin cod PHP (chiar daca unora nu le place, trebuie) ca sa putem folosi serviciul mai sus instalat.
Codul php se scrie in urmatorul format:
<?php
class flashRemoting
{
var $username = 'root';
var $password = '';
var $database = 'myservice';
var $host = 'localhost';
function flashRemoting()
{
$this->methodTable = array(
"doRead" => array(
"description" => "Functia de citire a bazei de date",
"access" => "remote"
)
);
$connect = mysql_connect($this->host, $this->username, $this->password);
$select = mysql_select_db( $this->database );
}
function doRead()
{
$sql = sprintf("SELECT * FROM `%s` ORDER BY `id` ASC", 'myfirstservice');
$result = mysql_query($sql);
return $result;
}
}
?>
*Note: Salvam scriptul sub numele flashRemoting.php in folderul services din cadrul AMFPHP-ului de pe localhost (local server). Sursa flash / scripturile flash tot acolo se vor salva
Asta ar fi tot codul care-l scriem in PHP (nu a fost mult si nici greu). Sperand ca aveti o baza de date cu numele myservice si tabela myfirstservice cu minim 1 camp care sa fie macar putin completat. Daca nu folositi codul de mai jos:
CREATE DATABASE `myservice` ;
CREATE TABLE `myfirstservice` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nume` varchar(200) collate latin1_general_ci NOT NULL,
`prenume` varchar(200) collate latin1_general_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1 ;
Completati campurile Nume si Prenume (sa zicem de 3 ori), id-ul nu trebuie completat deoarece se autoincrementeaza singur.
Gata cu PHP si MySQL, acum sa trecem in Flash.
Avem urmatorul cod, pe care-l voi explica treptat:
import mx.remoting.*;
import mx.rpc.*;
import mx.utils.Delegate;
/*
*
*Importam clasele de care avem nevoie pentru Remoting-ul din flash.
*
*/
var gatewayUrl:String = "http://localhost/flashservices/gateway.php";
var Nume:Array = new Array();
var Prenume:Array = new Array();
//link-ul catre gateway-ul nostru, modificati daca este nevoie
var service:Service = new Service(gatewayUrl, null, "flashRemoting");
//Declaram un nou serviciu care sa ne faca connexiunea catre php nostru folosind gateway.
//Functia de citire a bazei de date
function doRead()
{
var pc:PendingCall = service.doRead();
//Sunam (folosesc acest termen ca sa intelegem) la serviciu si cerem cu functia din serviciul nostru creat mai sus
pc.responder = new RelayResponder(this, "DoRead", DoReadError);
//Daca primim un raspuns apelam urmatoarea functie, DoRead, daca nu, apelam functia DoReadError
}
function DoRead(re:ResultEvent)
{
var rs:RecordSet = RecordSet(re.result);
//rs este un array care contine toate interogarile din baza noastra de date.
for(var i:Number = 0; i < rs.length; i++)
{
Nume.push(rs.items[i]["nume"]);
//Adaugam in array-ul Nume toate inregistrarile din baza noastra de date din campul nume;
Prenume.push(rs.items[i]["prenume"]);
//Adaugam in array-ul Prenume toate inregistrarile din baza de date din campul prenume;
}
DoWrite();
}
function DoWrite()
{
for(var j:Number = 0; j < Nume.length; j++)
{
//Adaugati pe stage, 2 textfield-uri dynamice cu instance name-urile numeText, respectiv, prenumeText
numeText._text += Nume[j]+newline;
prenumeText._text += Prenume[j]+newline;
}
}
Compilati movie-ul si ar trebuie sa apare in cele doua textfield-uri ce aveti in tabela din baza de date.
Pentru inceput atat, voi reveni cu un articol tot despre AMFPHP si Flash dar la un nivel putin mai avansat, sper sa va fi fost de ajutor!
** In cazul in am greseli va rog sa-mi spuneti