sábado, 20 de dezembro de 2008

Populando Datagrid Flex com informações do MySQL – parte I

Olá pessoal...

Me desculpem pela ausência durante as últimas semanas mas estive em um período de transições mas agora, voltei com força total para tentar passar o que sei a vocês.

Nesta semana, seguindo um roteiro lógico depois dos primeiros tutoriais que escrevi vou mostrar como retornar dados do MySQL para um datagrid em Flex, para que não fique muito extenso este tutorial, eu o divide em 3 partes. Então sem mais delongas vamos ao que interessa!

1º. Passo: Configurar os softwares necessários, em caso de dúvida basta acessar o tutorial sobre de configuração clicando aqui.

2º. Passo: Criar a tabela de dados que vamos utilizar para armazenar as informações, basta copiar o código abaixo e executar em seu gerenciador de banco de dados.


CREATE DATABASE `conexao`;
USE `conexao`;
DROP TABLE IF EXISTS `clientes`;
CREATE TABLE `clientes` (
`id` int(11) NOT NULL auto_increment,
`nome` varchar(40) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=latin1;

insert into `clientes`(`id`,`nome`) values (1,'Dheyson'),(2,'José'),(3,'Maria'),(4,'Júlio'),(5,'Marcos'),(6,'Eliana'),(7,'Cláudia'),(8,'Joaquim'),(9,'Carla'),(10,'Márcia');

3º. Passo: Nesta etapa vou mostrar a vocês uma classe de conexão genérica com o banco de dados MySQL, muito útil em meus desenvolvimentos. Vou demonstrar o apenas o código fonte da classe, pois se for explicar passo-a-passo todo código vou fugir ao foco do tutorial, mas me coloco a disposição para qualquer esclarecimento em caso de dúvidas.




/* Classe responsável pela conexão com o banco */
class Conn {

/* Variáveis Globais */
private $servidor;
private $usuario;
private $senha;
private $banco;
private $conn;
private $resultado;
private $sql;

/* Método Construtor */
public function Conn($server, $user, $pass, $banco) {
$this->setServidor($server);
$this->setUsuario($user);
$this->setSenha($pass);
$this->setBanco($banco);
}

/* Sets */
public function setServidor($server) {
$this->servidor = $server;
}
public function setUsuario($user) {
$this->usuario = $user;
}
public function setSenha($pass) {
$this->senha = $pass;
}
public function setBanco($banco) {
$this->banco = $banco;
}

/* Método que abre a conexão com o Banco de Dados */
public function connDB() {
$this->Conn = mysql_connect($this->servidor, $this->usuario, $this->senha);
if(!$this->Conn) {
echo "<p>N&atilde;o foi poss&iacute;vel conectar-se ao servidor MySQL. <br>Erro MySQL: ".mysql_error()."</p>";
exit();
} elseif (!mysql_select_db($this->banco, $this->Conn)) {
echo "<p>N&atilde;o foi poss&iacute;vel selecionar o banco de dados desejado. <br>Erro MySQL: ".mysql_error()."</p>";
exit();
}
}

/* Método que fecha a conexão com o Banco de Dados */
public function closeConnDB() {
return mysql_close($this->Conn);
}

/* Método que executa comando SQL */
public function runQuery($sql) {
$this->connDB();
$this->sql = $sql;
if($this->resultado = mysql_query($this->sql)) {
$this->closeConnDB();
return $this->resultado;
} else {
exit("<p>N&atilde;o foi poss&iacute;vel executar o comando solicitado. <br>Erro MySQL: ".mysql_error()."</p>");
$this->closeConnDB();
}
}

/* Método instância um objeto da classe de conexão */
static public function conexao(){
$con = new Conn('localhost', 'root', '123456', 'conexao');
return $con;
}
}
?>

4º. Passo: Salve a classe acima demonstrada com o nome de Conn.php dentro do diretório: ...\amfphp\services\vo\br\com\conexao\valuesObjects

imagem01

5º. Passo: Vamos criar uma classe para manipular a tabela clientes que foi criada em nossa base de dados. Salve esta classe com o nome de Cliente.php dentro do mesmo diretório demonstrado no 4º. Passo. O código da classe deverá ficar conforme descrito abaixo.


include_once("Conn.php");

/* Classe responsável pelo tratamento dos clientes */
class Cliente {

/* Aponta para classe ActionScript do projeto Flex */
public $_explicitType = "br.com.conexao.valueObjects.Cliente";

/* Variáveis globais */
public $id;
public $nome;

/* Método Construtor */
public function Cliente() {}

/* Sets */
public function setId($cod) {
$this->id = $cod;
}
public function setNome($name) {
$this->nome = $name;
}

/* Gets */
public function getId() {
return $this->id;
}
public function getNome() {
return $this->nome;
}

/* Acessos ao banco de dados
Aqui o php recebe o retorno do MySQL e retorna ao Flex um Array com os registros da consulta.
*/
public function buscarTodos() {
Conn::conexao()->connDB();
$resultado = Conn::conexao()->runQuery("select * from clientes order by nome");
$i=0;
while ($obj = mysql_fetch_object($resultado)) {
$cli = new Cliente();
$cli->setId($obj->id);
$cli->setNome($obj->nome);

$retornoArray[$i] = $cli;
$i++;
}
return $retornoArray;
}
}
?>

A parte de back-end já esta completa. A hierarquia de arquivos deve ter ficado conforme a imagem abaixo:

imagem02

Ok terminado estas etapas daremos seguimento na parte II, onde vamos criar nossas classes ActionScript e preparar nosso projeto Flex para acesso às informações do banco. Até lá e abraço a todos.

Nenhum comentário:

Postar um comentário