Página Inicial > Flex, Software > Screencast: Flex, PHP, AMFPHP e operações CRUD

Screencast: Flex, PHP, AMFPHP e operações CRUD

CRUD significa Create, Retrieve, Update, Delete e são as 4 operações básicas que um sistema faz para administrar dados armazenados em um banco de dados. Tenho certeza que a grande maioria dos iniciantes têm dúvidas sobre como realizar estas operações no Flex, com AMFPHP e foi por isso que aproveitei o bom humor nesta sexta-feira para colocar capricho no screencast deste post.

Este é de longe o maior que já gravei (pouco mais de 1 hora de gravação) e quem chegar ao final ganha um doce! HUAHUAHUAHUAHU

Aproveitei também que fiz as pazes com o mapeamento de objetos e expliquei tintin por tintin. OK, com isso, espero que todas as duvidas sobre a utilização do AMFPHP sejam sanadas.

Um forte abraço,

Ved


Links:

This website uses IntenseDebate comments, but they are not currently loaded because either your browser doesn't support JavaScript, or they didn't load fast enough.

  1. 26, julho, 2008 em 00:27 | #1

    Nao sei nem como agradecer por tanto conteudo.

    Parabens Ved e muito obrigdo mesmo. ;-)
    Esta sendo muito util e ajudando muita gente.

    Abs

  2. Geraldo Junior
    26, julho, 2008 em 04:04 | #2

    Fábio,

    Parabéns pela iniciativa de compartilhar seus conhecimentos, te acompanho nos sc desde o início, já é obrigatório passar aqui quando ligo o computador, valeu, muito obrigado.

    Obs.: Em um futuro, se possível, faça aquele sc de uploads multiplos que te pedi tempos atras, lembra? ainda preciso.

  3. 26, julho, 2008 em 08:38 | #3

    Seus screens estão ficando cada dia melhores.

    Parabéns mesmo.

    Abraço,

    Silva Developer

  4. 26, julho, 2008 em 09:47 | #4

    Excelente!

    Estes videos estão sendo de grande ajuda!

    Parabens!

  5. jairo
    26, julho, 2008 em 11:14 | #5

    Parabens mais uma vez.

    Acho que logo logo vc vai ser a lynda.com do brasil.

  6. danilo
    26, julho, 2008 em 16:40 | #6

    AiAiAiAiAiAiAiAiAiAiAiAiAiAiAiAiAi

    Nossa parabens Ved muito bom mesmo, sem comentarios.
    Voce esta sendo minha salvação.

    Voce é muito bom mesmo.

    Obrigadoooooooooooooooooooooooooooooooooooo

  7. 27, julho, 2008 em 18:46 | #7

    Show de bola, esse negócio de mapeamento é coisa do cão mesmo.
    Não sei se vai ajudar alguem ou se tem alguma lógica (sou iniciante :D ),
    mas na minha aplicação so funcionou o mapeamento depois que criei uma função que receba o meu VO tipo assim

    public function teste(a:clientesVO):void{
    Alert.show(‘teste’);
    }

    Apesar de não usar a função pra nada ela funciona para fazer o mapeamento funcionar, antes disso so tava pegando os dados do db com getAll e não funcionava.

    Sei lah se vai ajudar mas ta ai :D

    Jackson

  8. 27, julho, 2008 em 18:50 | #8

    @Jackson: muito obrigado, cara!

    Acabei esquecendo de falar do segundo pulo do gato no mapeamento de objetos: vc deve instancia pelo menos uma vez o VO para que o mapeamento funcione. Assim, basta fazer

    var qualquerCoisa:SeuVO;

    Pronto… a partir daí funciona!

  9. Thiago “ton_boy66″
    29, julho, 2008 em 17:27 | #9

    Uauu…. mais, mais, mais conhecimento…. hauhaua

  10. Juliano de Jesus dos Santos
    4, agosto, 2008 em 20:13 | #10

    Boa noite, Vedovelli, primeiramente, meus parabéns pela sua iniciativa, quer dizer, você é um cara sem medo de compartilhar seus conhecimentos, que procura ajudar, aqueles que se dediquem ao aprendizado.
    Só queria dizer, que eu sou iniciante em flex, comecei a entender um pouquinho de flex, agora em março deste ano, mas só conseguia me embananar.
    Com suas dicas e seus screencasts, posso dizer que estou conseguindo entender o que é RIA e muitos outros conceitos como este que você acabou de nos ensinar, o de mapeamento de objetos.
    Por favor, continue contribuindo para o autoconhecimento na web, isto faz de você um herói.
    Valeu.

  11. 5, agosto, 2008 em 18:23 | #11

    Grande Vedovelli, primeiramente gostaria de te dar os parabéns pela sua obra, e dizer também, que domigo eu também to na água da mardita, ou então não mão do palhaço. Mas enfim, gostaria de saber se há alguma forma de “transformar os dados do e.result em um VO, ainda mais que estou re-fazendo meu projeto de amfphp + flex, graças a sua grande maestria. Desde já agradeço. E se quiser me add no MSN, melhor ainda. Tenho algumas Dúvidas que tenho certeza que vc solucionaria. Vlw T++

  12. schonorio
    11, agosto, 2008 em 17:41 | #12

    Grande Ved,

    Estou começando no Flex e aproveitando muito de todas as dicas que você passa !!

    Grande abraço.

    schonorio

  13. Luiz
    23, setembro, 2008 em 19:27 | #13

    Cara, mto bom mesmo o cast… parabéns…

    Só não entendo uma coisa:
    Por que você não trabalha com o Eclipse com o plugin do php + plugin do Flex. Iso deixa o desenvolvimento muito mais fácil, e ajuda muito entendermos os tutos, principalmente por ser necessário ter a mesma estrutura de pastas.

    Vlw… e mais uma vez meus parabéns pelo tuto…

  14. Nogueira
    14, outubro, 2008 em 08:51 | #14

    Grande Ved,

    Primeiramente parabéns pelo trabalho, pois está excelente! Consegui tirar muito proveito do material!
    Implementei seu exemplo com os arquivos disponibilizados, consigo pegar os dados da base e exibir no Flex, mas quando vou alterar ou salvar um novo, ao clicar no botão gravar, recebo o erro:

    Argument 1 passed to Crud::updateItem() must be an instance of dadosVO, array given
    C:\xampp\htdocs\amfphp\services\Vedovelli\operacoesCRUD\Crud.php on line 33

    Poderia me ajudar????? Abraços e muito obrigado!

  15. sms
    14, outubro, 2008 em 19:56 | #15

    Parabéns, grande trabalho. Estou começando agora, porém com material igual ao seu vou aprender rapidinho.

  16. Nogueira
    15, outubro, 2008 em 16:41 | #16

    Bom, consegui resolver o problema sozinho afinal! Não sei se é a melhor solução mas creio que muitos vão passar pelo que passei aqui, pois rodei em mais de uma máquina e o erro era o mesmo. Minha função no PHP ficou conforme abaixo:
    public function addItem($arrDados){

    $dados = new dadosVO();
    $dados->cidade = $arrDados['cidade'];
    $dados->email = $arrDados['email'];
    $dados->estado = $arrDados['estado'];
    $db = $this->connection();
    $db->Execute(“INSERT INTO crud (email,cidade,estado) VALUES (‘{$dados->email}’,'{$dados->cidade}’,'{$dados->estado}’)”);
    $lastid = $db->insert_Id();
    $dados->recid = $lastid;

    return $dados;
    }
    public function updateItem($arrDados){

    $dados = new dadosVO();
    $dados->recid = $arrDados['recid'];
    $dados->cidade = $arrDados['cidade'];
    $dados->email = $arrDados['email'];
    $dados->estado = $arrDados['estado'];
    $db = $this->connection();
    $db->Execute(“UPDATE crud SET email=’{$dados->email}’, cidade=’{$dados->cidade}’, estado=’{$dados->estado}’ WHERE recid = ‘{$dados->recid}’”);
    return $dados;
    }

    Espero ajudar aos próximos colegas! Abraços, Nogueira.

  17. Thiago
    18, novembro, 2008 em 11:40 | #17

    vlw cara.. muito bom o screencast!

  18. Guilherme
    26, novembro, 2008 em 12:40 | #18

    Olá, Vedovelli

    Observei um pequeno erro: Depois de excluir o último registro e o DataGrid ficar vazio, se eu tentar gravar um novo registro ele dá um erro de Index out of bounds: -1. Como faço pra corrigir isso?

    Outra pergunta é, se um dos meus campo for um DateField, como pego os dados dele pra gravar no banco?

    Obrigado.

  19. Fabio B. Silva
    5, dezembro, 2008 em 18:58 | #19

    Olá Vedovelli….

    Inspirado pelo meu então colega de trabalho Ebercom da FlexDev
    comecei a Estudar flex a algum tempo e seus Screencasts foram de grande ajuda.
    com certeza seu trabalho já virou Referencia p\ todos os programador PHP e Flex.

    A algumas Semanas a Zend lançou a versão 1.7 do Zend Framework
    Agora Com Suporte ao protocolo AMF..
    Então Resolvi experimentar e fiz uma versão desse projeto usando o Zend 1.3 como back-end.

    O Zend_AMF facilita bastante o mapeamento de objetos e parece uma ótima opção p\ quem quer um php um pouco + poderoso..

    O Link p\ Download é Esse :
    http://www.2shared.com/file/4402448/83817443/ZendFlex.html

    Se alguem tiver problemas p\ baixar
    ou alguma duvida meu email é esse : fabinhotbn@yahoo.com.br

    Abraço a todos

  20. Alessandro Reale
    18, dezembro, 2008 em 14:09 | #20

    Olá Ved…. Tudo Bem!!!
    Antes de mais nada gostaria de parabenizar pelo seu blog,,,, pois está sendo de grande valia… continue assim… obrigado….

    Seguinte, estou com um probleminha no exemplo CRUD, que tu disponibilizou…
    Quando excluo um registro e logo em seguida tento adicionar um novo registro, apresenta o seguinte erro:

    RangeError: Index ‘-1′ specified is out of bounds.
    at mx.collections::ListCollectionView/setItemAt()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\collections\ListCollectionView.as:446]
    at main/atualizarResult()[C:\wamp20c\www\exemploCRUD\src\main.mxml:105]
    at mx.rpc::Responder/result()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\Responder.as:43]
    at mx.rpc::AsyncToken/http://www.adobe.com/2006/flex/mx/internal::applyResult()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\AsyncToken.as:199]
    at mx.rpc.events::ResultEvent/http://www.adobe.com/2006/flex/mx/internal::callTokenResponders()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\events\ResultEvent.as:172]
    at mx.rpc::AbstractOperation/http://www.adobe.com/2006/flex/mx/internal::dispatchRpcEvent()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\AbstractOperation.as:193]
    at mx.rpc::AbstractInvoker/http://www.adobe.com/2006/flex/mx/internal::resultHandler()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\AbstractInvoker.as:193]
    at mx.rpc::Responder/result()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\Responder.as:43]
    at mx.rpc::AsyncRequest/acknowledge()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\AsyncRequest.as:74]
    at NetConnectionMessageResponder/resultHandler()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\messaging\channels\NetConnectionChannel.as:515]
    at mx.messaging::MessageResponder/result()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\messaging\MessageResponder.as:199]

    Poderia me ajudar???

    Abraços,

  21. GUilherme
    5, janeiro, 2009 em 17:38 | #21

    Alessandro estou com o mesmo problema que o seu, conseguiu resolver?

  22. Alessandro
    5, janeiro, 2009 em 22:22 | #22

    Guilherme,,,, já procurei na net…. mas até agora nao achei nada…. nao consegui resolver….
    Se eu achar algo eu te aviso….

  23. GUilherme
    5, janeiro, 2009 em 22:44 | #23

    Blz Alessandro, valeu. Jah mandei email pro Vedovelli, mas nao respondeu, tenta mandar vc tbm vai q ele responde uahauhaua.

    Po, Vedovelli, respode a gente aih!!

    farowzz

  24. Cleber
    31, janeiro, 2009 em 21:51 | #24

    E ai Vedovelli vc tem sido muito util para os iniciantes em flex
    adorei esse screencast mas ja ia te chigando por não ter avisao que vc tava usando o adodb eu nem sabia o que era isso ai decidi procurar na net e acabei descobrindo mais uma ferramento util para usar nos meus projetos graças a vc.
    valeu cara..

  25. 18, fevereiro, 2009 em 12:22 | #25

    Ved~

    eu mudo a uri endpoit p/ o o meu endereço..
    na hora que executo, ele da erro exibindo o endereço antigo.
    no caso seria aquele seu //localhost:8080~ talz.

    o que ta acontecendo…
    eu jah alterei o endereço, o flex não puxa o endereço novo =\

    abrass

  26. 20, fevereiro, 2009 em 19:38 | #26

    se caso eu tenha que fazer um select de mais de uma tabela do banco!

    pq o flex não me responde nada ???

    não é possivel isso?

  27. 20, março, 2009 em 17:08 | #27

    muito fera seu trabalho e sua iniciativa…
    sou embriao ainda no mundo (desenvolvimento web).
    com tutorias assim ajuda muito.
    moro numa cidade de 2.000 habitantes so tem curso de informatica affff.

  28. Flávio Freitas
    22, março, 2009 em 20:47 | #28

    Olá,

    a minha dúvida é de iniciante. Baixei os screencasts sobre CRUD e não consigo assistir no meu PC, o player (vversão 10) está instalado, qual será o problema?

  29. 31, março, 2009 em 22:09 | #29

    Cara, simplesmente fantastico…

    Estou me iniciando agora no flex e trabalhos como o seu permitem que possa continuar aprendendo.

    Seu trabalho é muito bom mesmo.

    Obrigado.

  30. Marcio
    28, abril, 2009 em 09:29 | #30

    Olá, está com erro na aplicacção, falta o arquivo adodb.inc.php

    linha 2 do Crud.php
    include_once ‘../../adodb/adodb.inc.php’;

    Obrigado.

  31. Fernando
    28, maio, 2009 em 19:33 | #31

    Simplismente perfeito…
    muito obrigado pelo exemplo. Virei seu fã cara…

    =D

  32. Felipe
    11, junho, 2009 em 16:37 | #32

    Mto bom o screencast.
    Como é o primeiro site que aparece quando se pesquisa no Google sobre:
    Argument passed to must be an instance of array given amfphp

    Vou usar isso aqui para fazer uma utilizade pública.
    Não sei se já corrigiram na versão mais nova do AMFPHP, mas tem um Bug na versão que comecei a utiliza no Gateway.php quando utilizado em Plataforma Windows que é nas linhas que contem:

    $path = realpath($value . ‘/’) . ‘/’;

    essas barras são para UNIX, só trocar por:

    $path = realpath($value . ‘\\’) . ‘\\’;

    Espero ter ajudado.

    Abraço

  33. Simão Neto
    17, junho, 2009 em 08:15 | #33

    Bom dia Ved, cara a dois dias iniciei alguns trabalho com flex (apenas telas de sistemas para a empresa onde trabalho, nada de programação forte ainda…).

    Esses trabalho são muitos favorecidos para o pessoal que está iniciando como eu e muito tempo procurava por um material assim como esse sc… vai ser de grade ajuda…

    Parabens pelo trabalho e por compartilhar seus conhecimentos.

    Um abraço.

    fwl….

  34. george
    14, julho, 2009 em 02:52 | #34

    olá vedovelli otimo tutorial, so nao achei uma chamada q vc faz
    include_once ‘../../adodb/adodb.inc.php’; no arquivo crud.php, pois baixei o fonte e nao achei esta estrutura…abs

  35. george
    14, julho, 2009 em 22:47 | #35

    Olá Fabio…estou com o seguinte erro do caminho do gateway:
    Channel.Connect.Failed error NetConnection.Call.BadVersion: : url: ‘http://localhost/source/source/amfphp/gateway.php’
    Alguem ai ja conseguiu resolver?

  36. Flávio
    25, julho, 2009 em 15:48 | #36

    Eu não entendi porque no SQL você fez isso ‘”{$obj->campo}”‘ porque usar o { e } no PHP?

  37. Flávio
    25, julho, 2009 em 15:55 | #37

    @george
    Não sou o Fábio, mas vou tentar ajudar: Pode ser que seu PHP esteja com erro de sintaxe. Abra o endereço, ou pode ser que e o endereço do gateway esteja errado no service-config.xml

  38. Neto
    13, agosto, 2009 em 20:19 | #38

    Cara, valeu, vou dar uma olhada nisso.

  39. Alessandro Teixeira Lima
    18, agosto, 2009 em 14:05 | #39

    Cara só quero agradecer pelo ótimo material que vc colocou na net. Foi muito bom e me fez dar um salto no meu aprendizado em flex.

  40. Taciano R M Peruzzo
    20, setembro, 2009 em 23:59 | #40

    Argument 1 passed to Crud::updateItem() must be an instance of dadosVO, array given

    Pra quem esta ou estava com este erro, eu quebrei a cabeça pra resolvê-lo. Descobri que o flex está passando um array para o php e nao um objeto. Ai o que fiz foi convertêlo para um objeto, como o nosso amigo Nogueira fez lá em cima.

    public function updateItem($arr) {
    $dados = new dadosVO();
    foreach ($arr as $key => $value)
    {
    $dados->$key = $value;
    } …

    Ved, teus screencasts tem ajudado bastante a entender o flex e como as coisas funcionam, logo posto um projeto meu pra ti avaliar como está ficando, hehe, sem querer ser chato. Obrigado pelos conteúdos, são de primeira qualidade.

    Abs.

  41. Ulisses
    9, outubro, 2009 em 15:55 | #41

    Parabéns!

  42. Giovánni
    9, outubro, 2009 em 17:35 | #42

    Felomenal!!

  43. mairon
    19, novembro, 2009 em 13:29 | #43

    espero que vc estaja sempre de bom humor para postar sempres bons videos como esse
    abraço

  44. Matheus
    22, janeiro, 2010 em 21:26 | #44

    Quando eu crio a variavel remote e chamo o getInstance(); e rodo minha aplicacão os componentes não aparecem, quando tiro essa linha eles aparecem.
    Abs e obrigado pelos screencast

  1. 21, janeiro, 2009 em 22:55 | #1