Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Eduardo Giullyanny

Transformando um guestbook em agenda de nomes

Recommended Posts

estou usando o tuto: http://imasters.com.br/artigo/4615/fla...itar_e_excluir/

como base.

 

E eu não estou conseguindo

 

Estou querendo add campos para digitar: Tipo: Nome:, Telefone:, Cel:, Endereço:, empresa:, Obs:.

 

Mas não estou conseguindo. Gostaria tb que o id do mysql, ficasse visto. Tipo um numero de registro que ela foi add.

 

Alguem pode ajudar...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu mudei o tuto apenas nomes do bd era flashinteração e coloquei agenda_tel e o nome da tabela era guestbook eu coloquei agenda:

 

Flash com PHP e MySQL - Exibir, Inserir, Editar e Excluir

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.

<?php

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('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('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 'agenda_tel', com uma tabela 'agenda' de três campos: id, nome, mensagem. A SQL para a criação da tabela 'agenda' é a seguinte:

CREATE TABLE `agenda` (

`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 'agenda'.

INSERT INTO `agenda` ( `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'.

<?php

 

// Constantes com os dados do db.

define('DB_NOME', 'agenda_tel');

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 'agenda_tel'.

$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'.

<?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 'agenda'.

$query = "SELECT id, nome, mensagem FROM agenda";

// 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('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 <this.nLoop; n++){

trace(this['id' + n] + ' - ' + this['nome' + n] + ': ' + this['mensagem' + 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('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 <this.nLoop; n++){

// Adiciona o nome como etiqueta ao listbox, e o número do loop com valor.

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'.

<?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 agenda 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'.

<?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 agenda (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'.

<?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 agenda 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('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 <this.nLoop; n++){

// Adiciona o nome como etiqueta ao listbox, e o número do loop com valor.

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 = '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 = '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 = '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('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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.