MuRiLo_GeO 0 Denunciar post Postado Abril 14, 2010 Galera, Seguinte... Tenho uma aplicação no FLEX que eu acesso so dados com o AMFPHP, e também salvo. Eu busco os dados para um Datagrid, seguinte um tutorial que achei na net. busco assim: public function createDatagrid(event:ResultEvent):void { list_data_grid.dataProvider = event.result; } Estou populando o Datagrid beleza... Estou salvando tudo beleza também. Agora apareceu uma duvida... Como faço a consulta, colocando os dados em determinados campos? tipo.. como se fosse fazer uma consulta de dados de determinado cliente. Já pesquisei na net mas nao encontrei nada parecido, so acho tutos ensinando popular datagrid da forma que eu faço. Outra coisa é tratamento de erros... como retorno o erro pro flex e ele me informa corretamente o erro.... Alguma dica? Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Brito 12 Denunciar post Postado Abril 14, 2010 Eu não populo dataGrid's assim, eu uso uma váriavel do tipo ArrayCollection e jogo ela no dataProvider do meu grid. Voce quer fazer uma consulta como? Quer fazer um filtro? Ou quer fazer um tela de consulta? Quanto ao erro não entendi nao, explica melhor ai. Abs Compartilhar este post Link para o post Compartilhar em outros sites
MuRiLo_GeO 0 Denunciar post Postado Abril 15, 2010 Seguinte... Será para formulário de consulta. Onde eu irei pesquisar pelo numero da matricula e ele irá preencher os campos do form. A questão do erro é o seguinte. Quando fazemos uma pesquisa no MySQL e gera um erro, uma consulta errada por exemplo, ele nos retorna um erro no mysql_error. Como faço para mostrar essa mensagem de erro no flex? Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Brito 12 Denunciar post Postado Abril 15, 2010 Para fazer a busca é semlhante a qualquer sistema. Voce cria sua interface, cria seu metodo no php que faz a busca e quando clicar no botao de clicar chama o metodo do php com o amfphp e retorne os dados pro flex e trate eles. Ai voce tem que usar o tratamento de excessoes do actionscript. Pesquise por try-catch-finally Abs Compartilhar este post Link para o post Compartilhar em outros sites
MuRiLo_GeO 0 Denunciar post Postado Abril 22, 2010 Certo, mas p que eu nao estou conseguindo é tratar os dados. Consigo fazer a consulta corretamente, mas nao to conseguinto tratá-los. Outra coisa que estou quebrando a cabeça. Como irei fazer o loguin. Tenho aqui a consulta. Tipo assim, eu consigo fazer as consultas corretas no MySQL, porém não consigo fazer com que o flex faça isso, faço o PHP e o MySQL normalmente, mas nao consigo tratálas no Flex.. Procurei na net mas to com umas duvidas. Tem como você me mostrar um exemplo de fazer essas consultas e fazer o loguin? Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Brito 12 Denunciar post Postado Abril 22, 2010 Posta ai como você ta conseguindo e onde é exatamente sua dúvida, que vou te indicando o jeito correto. Abs Compartilhar este post Link para o post Compartilhar em outros sites
MuRiLo_GeO 0 Denunciar post Postado Abril 26, 2010 Seguinte... Fiz aqui uma simplificada do que eu tenho, mas tudo o que preciso... Peço desculpa pois não consegui colocar o codigo de forma correta, aqui não ta funcionando.... o codigo do flex ficou assim... <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:TextInput x="149.5" y="20" height="22" width="246.5" id="txtmatricula"/> <mx:TextInput x="149.5" y="50" height="22" width="246.5" id="txtnome"/> <mx:TextInput x="149.5" y="80" height="22" width="246.5" id="txtdepartamento"/> <mx:TextInput x="149.5" y="110" width="246.5" height="22" id="txtnivel"/> <mx:Label x="71.5" y="22" text="MATRICULA"/> <mx:Label x="105.5" y="112" text="NIVEL"/> <mx:Label x="48.5" y="82" text="DEPARTAMENTO"/> <mx:Label x="105.5" y="52" text="NOME"/> <mx:RemoteObject id="gateway" destination="amfphp" source="MySQL_Usuarios" showBusyCursor="true"> <mx:method name="salvar"/> <mx:method name="buscar"/> <mx:method name="alterar"/> <mx:method name="excluir"/> </mx:RemoteObject> <mx:Button click="buscar()" x="71.5" y="150" label="BUSCAR"/> <mx:Button click="salvar()" x="152.5" y="150" label="SALVAR"/> <mx:Button click="excluir()" x="233.5" y="150" label="EXCLUIR"/> <mx:Button click="alterar()" x="317" y="150" label="ALTERAR"/> <mx:Script> <![CDATA[ private function salvar():void{ gateway.salvar( txtmatricula.text, txtnome.text, txtdepartamento, txtnivel ); } private function excluir():void{ gateway.excluir(txtmatricula); } private function alterar():void{ gateway.alterar( txtmatricula.text, txtnome.text, txtdepartamento, txtnivel ); } private function buscar():void{ gateway.buscar(txtmatricula); } ]]> </mx:Script> </mx:Application> __ E no PHP está assim... <?php class MySQL_Usuarios{ function MySQL_Usuarios(){ $this->conn= mysql_pconnect('localhost', 'root', ''); mysql_select_db ('BD_MURILO'); } function salvar_usuarios($MATRICULA, $NOME, $DEPARTAMENTO, $NIVEL){ return mysql_query("INSERT INTO USUARIOS (MATRICULA, NOME, DEPARTAMENTO, NIVEL) values ('$MATRICULA', '$NOME', '$DEPARTAMENTO', '$NIVEL')"); } function excluir($MATRICULA){ return mysql_query("DELETE FROM USUARIOS WHERE MATRICULA = '$MATRICULA'"); } function atualizar($MATRICULA, $NOME, $DEPARTAMENTO, $NIVEL){ return mysql_query("UPDATE USUARIOS SET MATRICULA = '$MATRICULA', NOME = '$NOME', DEPARTAMENTO = '$DEPARTAMENTO', NIVEL = '$NIVEL'where MATRICULA = '$MATRICULA'"); } function buscar($MATRICULA){ return mysql_query("SELECT * FROM USUARIOS WHERE MATRICULA = '$MATRICULA'"); } } ?> Está funcionando o salvar, o excluir e o alterar, porém quero fazer o campo de buscar os dados e mostrar nos TextInput. tipo busca a matricula tal e ele me mostrar todos os dados referentes em meus campos. E também como fazer para tratar os erros. Por exemplo. quando for buscar alguma matricula e por ventura gerar um erro, ele me mostrar este erro. Essa é a minha dúvida e não consigo descobrir, pois os tutoriais que encontrei é so de popular datagrid, e datagrid consegui. Desde ja agradeço a ajuda kisuke. ???? Nada ??? Sem nenhuma ajuda.... Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Brito 12 Denunciar post Postado Abril 27, 2010 Esse método atualizar, você nao precisa alterar a matricula nao. Se ela for um Pk pelo jeito é uma pk então você nao precisa alterar ela nao. Para fazer uma busca isolada tipo pesquisar um funcionario pela matricula, é do mesmo modo, os tutoriais ensinam pra jogar no grid porque depois que você faz a consulta você tem que jogar em algum controle pro usuario visualizar pra dai ele poder interagir com esse resultado e fazer o que deseja. 1- Faz o metodo no php devolve um vetor pro flex. 2- No flex você recebe isso e joga onde quiser. //Chamada ao metodo private function buscaMedico(e:MouseEvent):void{ remoteMedico.buscaMedico(1); // passei o id arbritario você teria que passar o id que o usuario escolher no controle } private function resultBuscaMedico(e:ResultEvent):void{ testeArray = e.result.data as Array; //jogo num array, poderia ser arraycollection txtNome.text = e.result.data[0].MedicoNome.toString(); // e jogo nos campos txtNrCrm.text = e.result.data[0].MedicoNrCrm.toString(); cbUfCrm.text = e.result.data[0].MedicoUfCrm.toString(); txtTelefone.text = e.result.data[0].MedicoTelefone.toString(); } Se você quiser mostrar erros por exemplo o cara digita o login e a senha, dai você verifica isso no php, e la mesmo você indica qual o erro, dai devolve pro flex no vetor e so faz exibir. $retorno['mensagem'] = 'Login inválido plis try again!!!'; Abs Compartilhar este post Link para o post Compartilhar em outros sites
MuRiLo_GeO 0 Denunciar post Postado Abril 28, 2010 kisuke Na parte de alterar a matricula, eu que enviei errado, pois atualizo de acordo com o ID, pois aqui um funcionario contratado por tempo determinado entra na empresa, caso termine o contrato e ele volte, ele ja volta com uma matricula diferente, então para não ficar inserindo mais registro atualizo a matricula também. Sim realmente so jogao no Grid. Agora a parte que me ajudou de mais, muito mesmo!!! o seu codigo para chamar a função, eu não coloquei da forma que você postou, pois ele esta sendo disparado ao evento do mouse buscaMedico(e:MouseEvent), e como no meu preciso de fazer ao click de um botao, so alterei isso. na parte dos resultados voce me ajudou de mais, mas o codigo que esta foi alterado pois quando voce joga o resultado do PHP no Array, o Array fica sem fazer nada, pois depois voce trabalha preenchendo os campos com o resultado do PHP ainda, veja: testeArray = e.result.data as Array; //jogo num array, poderia ser arraycollection txtNome.text = e.result.data[0].MedicoNome.toString(); E outra coisa, quando coloco testeArray = e.result.data as Array no meu deu erro. Tive que tirar o data, ficando assim: testeArray = e.result as Array E trabalhando assim: txtNome.text = testeArray['MedicoNome'].toString(); ....... Na parte do erro, fiz da forma que uso no PHP normal, mas como não sabia direito como era no Flex fiz assim: function buscar($MATRICULA){ $query = mysql_query("SELECT * FROM USUARIOS WHERE MATRICULA = '$MATRICULA'"); if (!mysql_error()) { return $query; }else{ return "error"; } } irei fazer um tratamento melhor desse erro, mas ja deu para entender muito o como que tenho que fazer. Muito obrigado pela sua ajuda kisuke, voce me ajudou bastante... Precisando de mim também estamos ai. E desculpe a todos por não ter colocado a caixinha de codigo, aqui no meu trabalho não funciona tento inserir mas não vai. Deve ter alguma coisa que bloqueia Valew kisuke, obrigado mais uma vez.... Valew Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Brito 12 Denunciar post Postado Abril 28, 2010 É isso mesmo, voce entendeu tudo. Quando você tentou usar o testeArray = e.result.data as Array da erro no data, porque você nao tem o data no php no meu caso eu tenho , que é um vetor que tem esse data. $retorno['data'] , por isso deu erro. Quando eu preeenchi o form com os dados vindo do php no objeto do resultEvent, foi so uma forma de mostrar, do mesmo modo que eu disse que poderia jogar num vetor ou arraycollection, depois que jogasse num collection podia trabalhar com ele. Mas de qualquer forma você entendeu tudo e conseguiu fazer, o que precisava. Abs e precisando estamos ai. Compartilhar este post Link para o post Compartilhar em outros sites
MuRiLo_GeO 0 Denunciar post Postado Agosto 20, 2010 Kra... Na minha aplicação essa configuração deu certo. Porém em uma outra parte, que seria a parte mais importante de cadastro, ela não esta funcionando. Tipo consigo jogar dentro de um datagrid, mas jogar dentro do array não consigo. O que será que está acontecendo? busco normal e jogo no grid private function Resultbuscarprocesso(e:ResultEvent):void{ GridBusca.dataProvider = e.result; } mas se eu colocar para jogar no Array não funciona private function Resultbuscarprocesso(e:ResultEvent):void{ GridBusca.dataProvider = e.result; testeArray = e.result as Array; NOME_PN.text = testeArray['NOME_PN'].toString(); } O que será que está acontecendo? Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Brito 12 Denunciar post Postado Agosto 24, 2010 Quando passar tempo assim em um post, e ainda mais quando for dado como resolvido, porque sua dúvida inicial foi resolvida, é aconselhavel abrir outro post. Quanto a sua dúvida: private function Resultbuscarprocesso(e:ResultEvent):void{ GridBusca.dataProvider = e.result; } mas se eu colocar para jogar no Array não funciona private function Resultbuscarprocesso(e:ResultEvent):void{ GridBusca.dataProvider = e.result; testeArray = new ArrayCollection(e.result as Array);//onde testeArray é uma var do tipo ArrayCollection NOME_PN.text = testeArray['NOME_PN'].toString(); } Compartilhar este post Link para o post Compartilhar em outros sites