Flash + MySQL + PHP
:: Programando :: PHP
Página 1 de 1
Flash + MySQL + PHP
Interação do Flash com PHP e MySQL - Exibir, Inserir, Editar e Excluir
Neste artigo realizaremos a interação do Flash com o PHP e MySQL de uma forma muito simples. O único requisito é uma noção básica de PHP e MySQL.
Para iniciar, vamos ver como funciona o retorno de dados do PHP para Flash. Abra um novo arquivo PHP e salve-o como 'retorno.php'. O conteúdo é apenas a impressão de texto no formato de variável igual ao valor.
echo "teste=Imasters";
?>
Agora vamos ao Flash resgatar este valor através da classe LoadVars.
// Objeto LoadVars.
var retorno:LoadVars = new LoadVars();
// Carrega o arquivo PHP 'retorno.php'.
retorno.load('http://localhost/retorno.php');
// Ao arquivo ser carregado, a função 'carregarDados' é chamada.
retorno.onLoad = carregarDados;
function carregarDados():Void{
// Exibe o valor da variável 'teste' declarada no arquivo PHP na janela Output.
trace(this.teste);
};
Em "retorno.load('http://localhost/retorno.php');" o endereço poderia ser apenas 'retorno.php', mas para que rode no ambiente de teste do Flash, é necessário colocar junto ao endereço do servidor para que rode a partir do mesmo.
Exibindo dados do banco MySQL no Flash
O processo é o mesmo descrito acima. A única diferença é que, no PHP, os dados virão do banco de dados.
Primeiramente vamos criar o db 'flashInteracao', com uma tabela 'guestbook' de três campos: id, nome, mensagem. A SQL para a criação da tabela 'guestbook' é a seguinte:
CREATE TABLE `guestbook` (
`id` TINYINT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`nome` VARCHAR( 50 ) NOT NULL ,
`mensagem` VARCHAR( 255 ) NOT NULL
) ENGINE = innodb;
SQL para inserir alguns dados na tabela 'guestbook'.
INSERT INTO `guestbook` ( `id` , `nome` , `mensagem` ) VALUES
(NULL , 'Popai', 'Marinheiro, coma espinafre!'),
(NULL , 'Pernalonga', 'Velhinho, eu consegui desenvolver o sistema. =)'),
(NULL , 'Calvin', 'Cadê o Haroldo?');
O script para a conexão com o db. Altere o valor das constantes 'DB_USUARIO, DB_SENHA e DB_HOST' conforme suas configurações e salve-o como 'conexao.php'.
// Constantes com os dados do db.
define('DB_NOME', 'flashInteracao');
define('DB_USUARIO', 'root');
define('DB_SENHA', '');
define('DB_HOST', 'localhost');
// Conecta ao MySQL.
$conexao = mysql_connect(DB_HOST, DB_USUARIO, DB_SENHA) or die ('Erro ao conectar ao MySQL: ' . mysql_error());
// Conectar ao db 'flashInteracao'.
$conexaoDb = mysql_select_db(DB_NOME, $conexao) or die ('Erro ao conectar a base de dados: ' . mysql_error());
?>
O script PHP responsável por retornar os dados. Salve-o como 'retorno.php'.
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Data no passado
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // Sempre modificado
header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1
header("Cache-Control: post-check=0, pre-check=0", false); // HTTP/1.1
header("Pragma: no-cache"); // HTTP/1.0
// Os cabeçalhos acima evitam que o arquivo seja colocado em cache, subscrevendo quaisquer configurações do usuário.
// Inclui o script de conexão.
require_once('conexao.php');
// Resgatando os dados do db 'guestbook'.
$query = "SELECT id, nome, mensagem FROM guestbook";
// Através da função mysql_query(), a query é executada.
$sql = mysql_query($query);
$dados = ''; // Variável responsável por armazenar o resultado a cada loop.
$nLoop = 0; // Variável responsável por armazenar o número total de loops.
// A função mysql_fetch_array() gera um array com o resultando, e o while foi usado para colocar todos os resultados na variável '$dados'
// Já no formato em que o Flash reconheça (variável = valor), além do caractere '&' para separarem as variáveis.
while($n = mysql_fetch_array($sql)){
$dados .= '&id' . $nLoop . '=' . $n['id'];
$dados .= '&nome' . $nLoop . '=' . $n['nome'];
$dados .= '&mensagem' . $nLoop . '=' . $n['mensagem'];
$nLoop++; //soma 1 a cada loop.
};
// Imprime os dados obtidos no loop e o codifica para UFT-8
// e em seguida concatena (une) o número total de loops para que seja impresso junto aos dados.
echo utf8_encode($dados) . '&nLoop=' . $nLoop;
?>
Agora o actionscript fica da seguinte forma:
//objeto LoadVars.
var retorno:LoadVars = new LoadVars();
// Carrega o arquivo PHP 'retorno.php'.
retorno.load('http://localhost/retorno.php');
// Ao arquivo ser carregado a função 'carregarDados' é chamada.
retorno.onLoad = carregarDados;
function carregarDados():Void{
// Executa um loop até chegar ao número total de resultados.
for(var n:Number = 0; n
};
};
Inserindo os dados em um layout
Ok. Agora que os dados já estão sendo retornados, vamos inserí-los em um layout. O actionscript fica da seguinte forma:
//objeto LoadVars.
var retorno:LoadVars = new LoadVars();
// Carrega o arquivo PHP 'retorno.php'.
retorno.load('http://localhost/retorno.php');
// Ao arquivo ser carregado a função 'carregarDados' é chamada.
retorno.onLoad = carregarDados;
function carregarDados():Void{
listaNomes.removeAll(); //limpa o listBox.
// Executa um loop até chegar ao número total de resultados.
for(var n:Number = 0; n
listaNomes.addItem({label:this['nome' + n], data:n});
};
};
// Objeto ouvinte do listbox 'listaNomes'.
var listObjt:Object = new Object();
// Quando um novo item for selecionado o evento change é chamado.
listObjt.change = function(mudar:Object){
// Grava a ID do item selecionado na variável 'listIdSelecionado'.
listIdSelecionado = mudar.target.value;
// Insere o nome selecionado no textField 'nomeText'.
nomeText.text = retorno['nome' + listIdSelecionado];
// Insere a mensagem selecionado no textField 'mensagemText'.
mensagemText.text = retorno['mensagem' + listIdSelecionado];
};
// Registra o objeto 'listObjt' como ouvinte.
listaNomes.addEventListener("change", listObjt);
Scripts PHP para a Atualização, Inserção e Exclusão de dados no db.
Script PHP para a atualização dos dados. Salve-o como 'update.php'.
// Inclui o script de conexão.
require_once('conexao.php');
// Resgatando os dados vindos do Flash e os converte para ISO-8859-1.
$id = utf8_decode($_POST['id']);
$novoNome = utf8_decode($_POST['nome']);
$novaMensagem = utf8_decode($_POST['mensagem']);
// Query responsável por atualizar o db.
$query = "UPDATE guestbook SET nome='$novoNome', mensagem='$novaMensagem' WHERE id='$id'";
// Através da função mysql_query() a query é executada.
$sql = mysql_query($query);
// Retorna 1 (true) ou 0 (false), será usado para verificar no Flash se o SQL foi completado com sucesso.
echo 'sucesso=' . $sql;
?>
Script PHP para a inserção de novos dados. Salve-o como 'inserir.php'.
// Inclui o script de conexão.
require_once('conexao.php');
// Resgatando os dados vindos do Flash e os converte para ISO-8859-1.
$id = utf8_decode($_POST['id']);
$novoNome = utf8_decode($_POST['nome']);
$novaMensagem = utf8_decode($_POST['mensagem']);
// Query responsável por inserir novos dados no db.
$query = "INSERT INTO guestbook (nome, mensagem) VALUES ('$novoNome', '$novaMensagem')";
// Através da função mysql_query(), a query é executada.
$sql = mysql_query($query);
// Retorna 1 (true) ou 0 (false), será usado para verificar no Flash se o SQL foi completado com sucesso.
echo 'sucesso=' . $sql;
?>
Script PHP para a exclusão de dados. Salve-o como 'excluir.php'.
// Inclui o script de conexão.
require_once('conexao.php');
// Resgatando osdados vindos do Flash e os converte para ISO-8859-1.
$id = utf8_decode($_POST['id']);
// Query responsável pela exlusão de dados no db.
$query = "DELETE FROM guestbook WHERE id='$id'";
// Através da função mysql_query() a query é executada.
$sql = mysql_query($query);
// Retorna 1 (true) ou 0 (false), será usado para verificar no Flash se o SQL foi completado com sucesso.
echo 'sucesso=' . $sql;
?>
E, por fim, o actionscript final:
// Objeto LoadVars.
var retorno:LoadVars = new LoadVars();
// Carrega o arquivo PHP 'retorno.php'.
retorno.load('http://localhost/retorno.php');
// Ao arquivo ser carregado a função 'carregarDados()' é chamada através do evento onLoad.
retorno.onLoad = carregarDados;
function carregarDados():Void{
listaNomes.removeAll(); // Limpa o listBox.
// Executa um loop até chegar ao número total de resultados.
for(var n:Number = 0; n
listaNomes.addItem({label:this['nome' + n], data:n});
};
};
// Objeto ouvinte do listbox 'listaNomes'.
var listObjt:Object = new Object();
// Quando um novo item for selecionado o evento change é chamado.
listObjt.change = function(mudar:Object){
// Grava a ID do item selecionado na variável 'listIdSelecionado'.
listIdSelecionado = mudar.target.value;
// Insere o nome selecionado no textField 'nomeText'.
nomeText.text = retorno['nome' + listIdSelecionado];
// Insere a mensagem selecionado no textField 'mensagemText'.
mensagemText.text = retorno['mensagem' + listIdSelecionado];
habilitar(false); // Desabilita o botão 'btnExecutar' e os textFields 'nomeText' e 'mensagemText'.
status.text = 'OK'; // Insere na caixa de texto 'status' a palavra 'OK'.
};
// Registra o objeto 'listObjt' como ouvinte.
listaNomes.addEventListener("change", listObjt);
// Objeto loadVars
var lvguestbook:LoadVars = new LoadVars();
// Função chamada após o arquivo PHP ser carregado.
lvguestbook.onLoad = function(){
// É adicionado ao textField, se 'sucesso' for 'true', 'sucesso', caso contrário 'Erro'.
status.text = this.sucesso ? 'SUCESSO' : 'ERRO';
atualizaListBox(); // Função responsável por atualizar o listBox.
};
// Função a ser chamada ao clicar no botão 'btnExecutar'.
function enviarReceberDados():Void{
lvguestbook.id = retorno['id'+ listIdSelecionado]; // Envia o id.
lvguestbook.nome = nomeText.text; // Envia o nome.
lvguestbook.mensagem = mensagemText.text; // Envia a mensagem.
lvguestbook.sendAndLoad(urlPHP, lvguestbook, 'POST'); // Envia as variáveis e carrega o arquivo PHP.
};
function habilitar(valor:Boolean):Void{
// Habilita ou desabilita a edição dos textFields 'nomeText' e 'mensagemText'.
nomeText.editable = valor;
mensagemText.editable = valor;
//habilita ou desabilita o botão 'btnExecutar'.
btnExecutar.enabled = valor;
};
habilitar(false); // Desabilita o botão 'btnExecutar' e os textFields 'nomeText' e 'mensagemText'.
// Função do botão inserir
function funcInserir():Void{
habilitar(true); // Habilita o botão 'btnExecutar' e os textFields 'nomeText' e 'mensagemText'.
// Limpa os textFields 'nomeText' e 'mensagemText'.
nomeText.text = '';
mensagemText.text = '';
// Seta o arquivo PHP a ser usado.
urlPHP = 'http://localhost/inserir.php';
status.text = 'INSERINDO'; // Insere na caixa de texto 'status' a palavra 'INSERINDO'.
};
// Função do botão Editar
function funcEditar():Void{
habilitar(true); // Habilita o botão 'btnExecutar' e os textFields 'nomeText' e 'mensagemText'.
// Seta o arquivo PHP a ser usado.
urlPHP = 'http://localhost/update.php';
status.text = 'EDITANDO'; // Insere na caixa de texto 'status' a palavra 'EDITANDO'.
};
// Função do botão Exluir
function funcExcluir():Void{
// Seta o arquivo PHP a ser usado.
urlPHP = 'http://localhost/excluir.php';
enviarReceberDados(); // Chama função 'enviarReceberDados()'.
};
// Função responsável por atualizar o listBox após os dados serem atualizados.
function atualizaListBox():Void{
// Recarrega o arquivo PHP 'retorno.php'.
retorno.load('http://localhost/retorno.php');
// Ao arquivo ser carregado a função 'carregarDados()' é chamada através do evento onLoad.
retorno.onLoad = carregarDados;
habilitar(false); // Desabilita o botão 'btnExecutar' e os textFields 'nomeText' e 'mensagemText'.
// Limpa os textFields 'nomeText' e 'mensagemText'.
nomeText.text = '';
mensagemText.text = '';
};
btnInserir.onRelease = funcInserir; // Seta a função do botão 'btnInserir'.
btnEditar.onRelease = funcEditar; // Seta a função do botão 'btnEditar'.
btnExcluir.onRelease = funcExcluir; // Seta a função do botão 'btnExcluir'.
btnExecutar.onRelease = enviarReceberDados; // Seta a função do botão 'btnExecutar'.
Neste exercício, simplifiquei o máximo possível e não deixei o foco do artigo. Por este motivo não foi adicionado verificações nos textFields e não houveram otimizações no layout e na forma com que se efetuam as operações para uma melhor usabilidade, o que poderia deixar o desenvolvimento complexo e dificultando o entendimento do assunto proposto.
- Anexos
Tópicos semelhantes
» Clássico Zuma em Flash
» MySQL Stored Procedures
» Hospedagem Grátis com PHP e Mysql
» Fazendo Conexão com banco de dados com PHP + MySQL
» Exibir os dados do bando de dados MySql, em uma tabela, usando a linguagem PHP
» MySQL Stored Procedures
» Hospedagem Grátis com PHP e Mysql
» Fazendo Conexão com banco de dados com PHP + MySQL
» Exibir os dados do bando de dados MySql, em uma tabela, usando a linguagem PHP
:: Programando :: PHP
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|