Ir para conteúdo

POWERED BY:

Arquivado

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

Diego Eveling

[Resolvido] LoadVars

Recommended Posts

bom dia pessoal,

estou com um probleminha ao carregar umas variaveis do flash e tentar enviá-las para um script php... é o seguinte:

tenho dois campos:"nome" e "senha" com instances txt_nome e txt_senha respectivamente, aí crio o LoadVars e tento carregar uma instrução sql e colocar essas variáveis acima como parâmetro para uma consulta feita através do php em um BD MySql... mas dá erro no flash mesmo, já ao testar o "swf". Vou postar os códigos pra entenderem melhor:

o onRelease do meu botão:

but.onRelease = function() {
	var verif:LoadVars = new LoadVars();
	verif.sql = "select cod_cliente,nome,senha from Clientes where nome ='"+ txt_nome.text + "' and senha = '"txt_senha.text"';";
	verif.sendAndLoad("consulta.php",0,"POST");
	verif.onLoad = function(){
		trace(verif.cod_cliente);
	}
};
aki o php:

<?php
    $banco   = ‘meu_banco’;             // nome do banco
    $host    = ‘meu_dominio’;             // host
    $usuario = ‘meu_usuario’;                  // usuario
    $senha   = 'minha_senha'       ;               // senha
    $sql     = $_POST['slq']; // query a ser executada
    print $sql; 

    mysql_connect($host, $usuario, $senha);
    mysql_select_db($banco);
    $dados = '';
    $nLoop = 0;
    while($n = mysql_fetch_array($sql)){
    $dados .= '&cod_cliente' . $nLoop . '=' . $n['cod_cliente'];
    $dados .= '&nome' . $nLoop . '=' . $n['nome'];
    $dados .= '&senha' . $nLoop . '=' . $n['senha'];
    $nLoop++;
    }
    echo utf8_encode($dados). "&nLoop=". $nLoop;
?>
me desculpem pelo tamanho do post, mas fik melhor esclarecido... desde ja agradeço a ajuda de todos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, primeiramente você deve usar a instancia do seu objeto loadVArs para o envio, ficando:

 

       verif.sendAndLoad("consulta.php",verif,"POST");

depois no onLoad, você não tem nenhum echo do php que retorne cod_cliente, sendo assim a variavel não existirá no flash, então você teria que colocar no flash:

 

verif.onload = function(){
                trace(this.cod_cliente);
        }

Outra coisa é que no php você está fazendo um loop que toda hora printa um novo nome para o cliente, então o ideal seria você fazer o retorno em xml para obter els em nós e não em variáveis, pois creio que se mandar &cod_cliente=1&cod_cliente=2&cod_cliente=3 e assim por diante, ele vai sempre valer o último pois a variável no flash está trocando de valor a cada hora, dai ou você da nomes diferentes as variáveis ou retorna um xml para o flash conseguir ler tudo, é mais ou menos isso que precisa?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, primeiramente você deve usar a instancia do seu objeto loadVArs para o envio, ficando:

 

       verif.sendAndLoad("consulta.php",verif,"POST");

depois no onLoad, você não tem nenhum echo do php que retorne cod_cliente, sendo assim a variavel não existirá no flash, então você teria que colocar no flash:

 

verif.onload = function(){
                trace(this.cod_cliente);
        }

Outra coisa é que no php você está fazendo um loop que toda hora printa um novo nome para o cliente, então o ideal seria você fazer o retorno em xml para obter els em nós e não em variáveis, pois creio que se mandar &cod_cliente=1&cod_cliente=2&cod_cliente=3 e assim por diante, ele vai sempre valer o último pois a variável no flash está trocando de valor a cada hora, dai ou você da nomes diferentes as variáveis ou retorna um xml para o flash conseguir ler tudo, é mais ou menos isso que precisa?

 

então amigos, primeiramente agradeço a ajuda!

e como me disseram fiz as alterações necessárias e o erro que estava bugando meu projeto acabou, só que não retornou a variavel cod_cliente como esperado, tem uma forma correta de fazer isso... poderiam me ajudar novamente? postei os novos códigos...

novo php:

<?php
  $banco   = 'meu_banco';             // nome do banco
    $host    = 'meu_dominio';             // host
    $usuario = 'meu_usuario';                  // usuario
    $senha   = 'minha_senha'       ;               // senha
    $sen     = $_POST['senha']; 
        $nome    = $_POST['nome'];
        $sql     = "select cod_cliente,nome,senha from Clientes where nome = '"+$nome+"' and senha = '"+$sen +"';";// query a ser executada
         mysql_connect($host, $usuario, $senha);
    mysql_select_db($banco);
        $dados = '';
    $n = mysql_fetch_row($sql);
    $dados .= '&cod_cliente' . '=' . $n['cod_cliente'];
    $dados .= '&nome' . '=' . $n['nome'];
    $dados .= '&senha' . '=' . $n['senha'];
    }
    echo utf8_encode($dados);
?> 
agora o flash:

but.onRelease = function() {
        var verif:LoadVars = new LoadVars();
        verif.nome = txt_nome.text;
        verif.senha = txt_senha.text;
        verif.sendAndLoad("consulta_login.php",verif,"POST");
        verif.onload = function(){
                trace(this.cod_cliente);
        }
já aproveitando que você citou sobre gerar um xml pelo php... eu fiz isso numa parte do projeto, acho que nessa seção não será necessário usar esse recurso, pois preciso do retorno de apenas um registro do BD, mas na parte que fiz o php criar o xml deu certo até criar o xml, eu acho.. :P pq não entendi direito se ele cria só virtualmente e não consigo achar o arquivo criado, logo o não sei nem se pego as variaveis pelo php mesmo ou se busco o url do xml pra conseguir essas variaveis,se puderem dar um auxílio nisso tb agradeço.

códigos para esclarecimento:

 

O php, peguei esse exemplo aqui no forum mesmo, por isso que está todo comentado bunitim... http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

<?php
    // arquivo mysql2xml.php

    // definimos informacoes para conexao ao banco de dados:
    $banco   = "meu_banco";             // nome do banco
    $host    = "meu_dominio";             // host
    $usuario = "meu_usuario";                  // usuario
    $senha   = "minha_senha";               // senha
	$idProduto =  $_POST["idProduto"];
	$codigo_original = $_POST["codigo_original"];
	$descricao = $_POST["descricao"];
	$veiculo = $_POST["veiculo"];
	$marca = $_POST["marca"];
    $sql     = "select idProduto,codigo_original,descricao,preco_venda,marca from produtos where idProduto = "+$idProduto+" or codigo_original = "+$codigo_original+ " or descricao = "+$descricao+" or descricao like '%"+$veiculo+"%' or marca = "+$marca; // query a ser executada
    
    
    // criamos um objeto do tipo SimpleXMLElement, o qual ira
    // gerar o XML para nos
    $sxe = new SimpleXMLElement("<resultset />");
    
    // connectamos ao host e executamos a query sql
    mysql_connect($host, $usuario, $senha);
    mysql_select_db($banco);
    $rs = mysql_query($sql);
    
    // em um loop, obtemos todas as linhas do resultado
    // da query. Note que o resultado e’ obtido como um array
    // associativo apenas.
    while ( $row = mysql_fetch_array($rs, MYSQL_ASSOC) ) {
        // abaixo do primeiro node do XML que estamos criando, vamos
        // adicionando mais um no, que ira conter o resultado da query.
        // na primeira iteracao do loop, o xml estaria parecendo com
        //
        // <resultset>
        //     <line></line>
        // </resultset>
        $line = $sxe->addChild("line");

        // e, em mais um loop, passamos por todos as colunas
        // do resultado da query e adicionamos cada uma delas
        // ao node criado anteriomente. Neste loop, apos a primeira
        // e a segunda iteraca, o xml estaria parecendo com: 
        // (para o sql citado anteriormente)
        //
        // <resultset>
        //     <line>
        //         <id_exemplo>1</id_exemplo>
        //         <descricao>Primeiro exemplo</descricao> 
        //     </line>
        // </resultset>
        foreach ( $row as $fieldName => $value )
            $line->addChild($fieldName, $value);
    }
    
    // finalmente, transformamos o objeto SimpleXMLElement criado no 
    // inicio do scrip em uma string formatada em XML
    echo $sxe->asXML();
?>
o que faço no flash agora?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora que percebi pelo where que seria um retorno só, pela parte do flash parece que está ok, você ja tentou rodar a query sem o post, usando um certo usuário e senha pra ver o que o php está retornando? verifique se ele está escrevendo a linha corretamente, sem trocar por exemplo o & por outros caracteres que romperiam a variavel.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora que percebi pelo where que seria um retorno só, pela parte do flash parece que está ok, você ja tentou rodar a query sem o post, usando um certo usuário e senha pra ver o que o php está retornando? verifique se ele está escrevendo a linha corretamente, sem trocar por exemplo o & por outros caracteres que romperiam a variavel.

 

então... o a variavel cod_cliente só aparece com valor undefined. será que tenho que passar variavel por variavel no php... assim:

<?php
echo "$cod_cliente&";
echo "$nome&";
echo "$senha&";
?>
de qualquer forma vou testar e se der certo eu posto aqui!

valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você teria que colocar assim no php:

 

<?php
echo "&cod_cliente=".$cod_cliente."&";
echo "&nome=".$nome."&";
echo "&senha=".$senha."&";
?>
é parceiro... tá difícil, desse jeito tb num foi não. a variavel continua UNDEFINED! vou postar o código dinovo, se alguém souber onde está o erro, por favor ajude!

o php:

<?php
  $banco   = 'meu_banco';             // nome do banco
    $host    = 'meu_dominio';             // host
    $usuario = 'meu_usuario';                  // usuario
    $senha   = 'minha_senha'       ;               // senha
    $sen     = $_POST['senha']; 
	$nome	 = $_POST['nome'];
	$sql	 = "select cod_cliente,nome,senha from Clientes where nome = 'teste' and senha = '123456';";// query a ser executada
	 mysql_connect($host, $usuario, $senha);
    mysql_select_db($banco);
	$dados = '';
 //   $n = mysql_fetch_row($sql);
 //   $dados .= '&cod_cliente' . '=' . $n['cod_cliente'];
 //   $dados .= '&nome' . '=' . $n['nome'];
 //   $dados .= '&senha' . '=' . $n['senha'];
    
     echo "&cod_cliente=".$cod_cliente."&";
    echo "&nome=".$nome."&";
    echo "&senha=".$senha."&";
?>
e o flash:

but.onRelease = function() {
	var verif:LoadVars = new LoadVars();
	verif.nome = txt_nome.text;
	verif.senha = txt_senha.text;
	verif.sendAndLoad("consulta_login.php",verif,"POST");
	verif.onLoad = function(){
		trace(this.cod_cliente);
	}
};
agradecido... ^_^

Compartilhar este post


Link para o post
Compartilhar em outros sites

eieiei

 

Mete tanto eco assim não ta doido?

é um só em cadeia!!!

 

echo "&variavel1=1&variavel2=2&variavel3=3&";

 

Abraços

 

Então berseck... como você me indicou a fazer deu certo, só que ainda não carrega o valor do campo cliente, agora está retornando ".$cod_cliente."; como valor da variavel, ou seja, tah pegando a string depois do "="... se for preciso por favor mudem o topico de lugar, jah tah virando duvida de PHP... http://forum.imasters.com.br/public/style_emoticons/default/ermm.gif mas segue o código como está agora:

PHP:

<?php
  $banco   = 'meu_banco';             // nome do banco
    $host    = 'meu_dominio';             // host
    $usuario = 'meu_usuario';                  // usuario
    $senha   = 'minha_senha'       ;               // senha
    $sen     = $_POST['senha']; 
	$nome	 = $_POST['nome'];
	$sql	 = "select cod_cliente,nome,senha from Clientes where nome = 'teste' and senha = '123456';";// query a ser executada
	 mysql_connect($host, $usuario, $senha);
    mysql_select_db($banco);
	mysql_query($sql);
     echo "&cod_cliente=".$cod_cliente."&nome=".$nome."&senha=".$senha."&";
?>

o flash tah o mesmo do meu ultimo post... ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

eieiei

 

Mete tanto eco assim não ta doido?

é um só em cadeia!!!

 

echo "&variavel1=1&variavel2=2&variavel3=3&";

 

Abraços

 

Então berseck... como você me indicou a fazer deu certo, só que ainda não carrega o valor do campo cliente, agora está retornando ".$cod_cliente."; como valor da variavel, ou seja, tah pegando a string depois do "="... se for preciso por favor mudem o topico de lugar, jah tah virando duvida de PHP... http://forum.imasters.com.br/public/style_emoticons/default/ermm.gif mas segue o código como está agora:

PHP:

<?php
  $banco   = 'meu_banco';             // nome do banco
    $host    = 'meu_dominio';             // host
    $usuario = 'meu_usuario';                  // usuario
    $senha   = 'minha_senha'       ;               // senha
    $sen     = $_POST['senha']; 
	$nome	 = $_POST['nome'];
	$sql	 = "select cod_cliente,nome,senha from Clientes where nome = 'teste' and senha = '123456';";// query a ser executada
	 mysql_connect($host, $usuario, $senha);
    mysql_select_db($banco);
	mysql_query($sql);
     echo "&cod_cliente=".$cod_cliente."&nome=".$nome."&senha=".$senha."&";
?>

o flash tah o mesmo do meu ultimo post... ;)

 

 

Amigo,

 

As variáveis $nome e $sen estão recebendo o valor ali em cima vindo do $_POST[].

Mas a variavel $cod_cliente não esta recebendo valor nenhum...

Não seria esse o problema??

Ela precisa receber um valor logo após o seu SELECT...

 

Qualquer coisa, posta aí...

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

 

eieiei

 

Mete tanto eco assim não ta doido?

é um só em cadeia!!!

 

echo "&variavel1=1&variavel2=2&variavel3=3&";

 

Abraços

 

Então berseck... como você me indicou a fazer deu certo, só que ainda não carrega o valor do campo cliente, agora está retornando ".$cod_cliente."; como valor da variavel, ou seja, tah pegando a string depois do "="... se for preciso por favor mudem o topico de lugar, jah tah virando duvida de PHP... http://forum.imasters.com.br/public/style_emoticons/default/ermm.gif mas segue o código como está agora:

PHP:

<?php
 $banco = 'meu_banco'; // nome do banco
 $host = 'meu_dominio'; // host
 $usuario = 'meu_usuario'; // usuario
 $senha = 'minha_senha' ; // senha
 $sen = $_POST['senha']; 
	$nome   = $_POST['nome'];
	$sql   = "select cod_cliente,nome,senha from Clientes where nome = 'teste' and senha = '123456';";// query a ser executada
   mysql_connect($host, $usuario, $senha);
 mysql_select_db($banco);
	mysql_query($sql);
 echo "&cod_cliente=".$cod_cliente."&nome=".$nome."&senha=".$senha."&";
?>

o flash tah o mesmo do meu ultimo post... ;)

 

 

Amigo,

 

As variáveis $nome e $sen estão recebendo o valor ali em cima vindo do $_POST[].

Mas a variavel $cod_cliente não esta recebendo valor nenhum...

Não seria esse o problema??

Ela precisa receber um valor logo após o seu SELECT...

 

Qualquer coisa, posta aí...

 

 

Bingo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Amigo,

 

As variáveis $nome e $sen estão recebendo o valor ali em cima vindo do $_POST[].

Mas a variavel $cod_cliente não esta recebendo valor nenhum...

Não seria esse o problema??

Ela precisa receber um valor logo após o seu SELECT...

 

Qualquer coisa, posta aí...

 

Então wagatim, primeiro obrigado, eu fiz uma mudança, mas não encontrei um jeito de fazer sem usar o "while" e desse jeito só retorna Array... e ao buscar minha variavel cod_cliente ou ela vem undefined ou vem com o valr de string ".cod_cliente". Se você ou alguém souber um jeito de fazer isso...por favor ajude-me! o código como está agora:

PHP na parte que mudei:

$resultado = mysql_query($sql,$conexao);
	while ($linha = mysql_fetch_array($resultado)) {
	$cod_cliente = $linha['cod_cliente'];
	 }
	  echo "&cod_cliente=".$cod_cliente."&";
?>
o Flash ainda é o mesmo... ^_^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ta lhe faltando PHP rapaz :)

$linha = mysql_fetch_object($resultado);

$cod_cliente = $linha->cod_cliente;

Sem while heim... já que vai retornar apenas 1 valor

 

Abraços

 

Berseck... me salvou!!! MUITÍSSIMO obrigado... era isso mesmo... agora que consegui vou postar os códigos pra galera que tenha a mesma duvida. E vou seguir seu conselho amigo, estudar php!

código 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
// Mensagens de Erro
$msg[0] = "Conexão com o banco falhou!";
$msg[1] = "Não foi possível selecionar o banco de dados!";

  $banco   = 'meu_banco';             // nome do banco
    $host    = 'meu_dominio';             // host
    $usuario = 'meu_usuario';                  // usuario
    $senha   = 'minha_senha'       ;               // senha
    $sen     = $_POST['senha']; 
	$nome	 = $_POST['nome'];
	$sql	 = "select cod_cliente,nome,senha from Clientes where nome = 'admin' and senha = '142609';";// query a ser executada
	// Fazendo a conexão com o servidor MySQL
$conexao = mysql_pconnect($host,$usuario,$senha) or die($msg[0]);
mysql_select_db($banco,$conexao) or die($msg[1]);
	$resultado = mysql_query($sql,$conexao);
	$linha = mysql_fetch_object($resultado);
	$cod_cliente = $linha->cod_cliente;
	echo "&cod_cliente=".$cod_cliente."&";
?>
e o código flash:

but.onRelease = function() {
	var verif:LoadVars = new LoadVars();
	verif.nome = txt_nome.text;
	verif.senha = txt_senha.text;
	verif.sendAndLoad("consulta_login.php",verif,"POST");
	verif.onLoad = function(){
		trace(this.cod_cliente);
	}
};
abraço a todos e fico muito agradecido não só ao berseck, mas a todos que me ajudaram nesse tópico.

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.