Ir para o conteúdo

 Voltar a Fórum do For...
Tela cheia

Adicionar campos dinânicos ao formulário

9 de Junho de 2012, 11:04 , por Desconhecido - | Ninguém seguindo este artigo por enquanto.
Visualizado 11 vezes

Bom dia,

Estou querendo adicionar campos dinâmicos a um formulário. Por exemplo: um cadastro de telefones de uma pessoa preciso que preencha com todos os telefones, no mínimo um, podendo ter vários.

Alguém tem alguma dica?

 

Abraço. 

Autor: Tiago Stifft


33 comentários

  • 51b06d6eae66e2cfdfc361d418eea715?only path=false&size=50&d=404Luis Eugênio barbosa(usuário não autenticado)
    10 de Junho de 2012, 22:47

     

    Tiago,

    uma maneira mais rápida de você implementar isso é utilizando o recurso do grid-off line, que permite adicionar os telefones a um gride e depois salava-los todos de uma vez.

    Veja como implementar isso no diretório de exemplos do FormDin. Os arquvos são:

    base/exemplos/exe_gride_3.php e base/exemplos/exe_gride_3_dados.php.

    Neste exemplo eu utilizei um array de dados fixo, mas ali você tem que recuperar os telefones já gravados, para que o usuário possa edita-los ou adicionar outros.

    Abraço.

    • Eea89bd1c821476b148308b0119ec275?only path=false&size=50&d=404Tiago Stifft(usuário não autenticado)
      11 de Junho de 2012, 19:26

       

      Observei o exemplo, mas ainda não consegui entender tudo.

      No meu caso tenho uma tabela pessoas e uma tabela telefones. O grid off line, tem que adicionar na tabela telefones com os sequintes atributos: id(chave primaria), id_pessoas, tipo, numero, onde id_pessoas é chave estrangeira e faz referencia ao id da tabela id_pessoas.

      Olha o meu cad_pessoas.php

      <?php

      $frm = new TForm('Cadastro de Pessoas');

      $frm->addHiddenField('id');
      $pc = $frm->addPageControl('pc');
      $pc->addPage('Cadastro',true,true,'abaCadastro');

          $frm->addTextField('nome','Nome:',50,true,50);
          $frm->addMemoField('endereco','Endereco:',120,false,60,1);
          $frm->addTextField('bairro','Bairro:',30)
          $fldCep = $frm->addCepField('cep','CEP:',false,null,null,'des_endereco','nom_bairro','cidade','uf',null,null,null,null,null);
          $frm->addTextField('cidade','Cidade:',30,false);
          $frm->addSelectField('uf','Uf:',2);
          //$frm->addTextField('uf','Estado:',02,false,null,null,false);
          $frm->addTextField('email','Email:',50,false,50);
         

          $frm->addHtmlGride('campo_telefones','./modulos/cad_pessoas/telefone.php','gdx');
         

          $frm->addButton('Salvar','salvar','btnSalvar',null,null,true,false);
          $frm->addButton('Limpar','limpar','btnLimpar',null,null,false,false);
          $pc->addPage('Listagem');
          $frm->addHtmlField('html_gride','Aqui sera carregado o gride');
          $frm->processAction();
          $g = new TGrid('gd' ,'Listagem das Pessoas', PessoasDAO::selectAll('nome') ,null,null,'id');
          $frm->set('html_gride',$g); // ou $frm->getField('gride')->add($g);
          $frm->show();
      ?>

       

      E esse é o meu telefones.php

      $frm = new TForm(null,150,800);
      $frm->setcss('background-color','#EEDD82');
      $frm->addHiddenField('id_fone');

      $frm->addJavascript('gridCallBack(REQUEST)');

      $frm->addHiddenField('id_pessoas');
      $frm->addSelectField('tipo','Tipo de Telefone:',null,'0=Residencial,1=Trabalho,2=Celular',null,null,'');
      $frm->addFoneField('numero','Telefone:');
      $frm->addTextField('teste','Teste',60,false,60);

      $res['TIPO_FONE'][0]         = 'tipo';

      $res['NUMERO_FONE'][1]         = 'numero';

      $res=null;

      $grid = new TGrid('gdfones','',$res,null,null,'SEQ_MOEDA,SEQ_DOCUMENTO',null,null,'./modulos/cad_pessoas/telefone.php');
      $grid->setForm($frm,false);
      $grid->setShowAdicionarButton(true);

      $grid->show();

      • 51b06d6eae66e2cfdfc361d418eea715?only path=false&size=50&d=404Luis Eugênio barbosa(usuário não autenticado)
        11 de Junho de 2012, 23:29

         

        Tiago,

        fiz alguns ajustes para que você possa compreender melhor. Veja se agora está funcionando.

        Destaquei de vermelho onde mexi.

        Abraço.

        cad_pessoas.php 

        <?php
        $frm = new TForm('Cadastro de Pessoas');
        $frm->addHiddenField('id');
        $pc = $frm->addPageControl('pc');
        $pc->addPage('Cadastro',true,true,'abaCadastro');
            $frm->addTextField('nome','Nome:',50,true,50);
            $frm->addMemoField('endereco','Endereco:',120,false,60,1);
            $frm->addTextField('bairro','Bairro:',30);
            $frm->addCepField('cep','CEP:',false,null,null,'des_endereco','nom_bairro','cidade','uf',null,null,null,null,null);
            $frm->addTextField('cidade','Cidade:',30,false);
            $frm->addSelectField('uf','Uf:',2);
            //$frm->addTextField('uf','Estado:',02,false,null,null,false);
            $frm->addTextField('email','Email:',50,false,50);
            $frm->addHtmlGride('campo_telefones','modulos/cad_pessoa/telefone.php','gdfones',null,null,null,null,'id_pessoas');
            $frm->addButton('Salvar','salvar','btnSalvar',null,null,true,false);
            $frm->addButton('Limpar','limpar','btnLimpar',null,null,false,false);
            $pc->addPage('Listagem');
            $frm->addHtmlField('html_gride','');
            $frm->processAction();
            $g = new TGrid('gd' ,'Listagem das Pessoas', null ,null,null,'id');
            $frm->set('html_gride',$g); // ou $frm->getField('gride')->add($g);
            $frm->show();
        ?>

         telefone.php

        <?php
        $frm = new TForm(null,70,800);
        $frm->setcss('background-color','#EEDD82');
        $frm->addHiddenField('id_fone');
        $frm->addHiddenField('id_pessoas');
        $frm->addSelectField('tipo','Tipo de Telefone:',true,'0=Residencial,1=Trabalho,2=Celular',null,null,'');
        $frm->addFoneField('numero','Telefone:',true,false);

        // recuperar os telefones da pessoa que já estão salvos
        $dados = TelefonesDAO::selectAll(null,"id_pessoas = '".$frm->get('id_pessoas')."'");

        $grid = new TGrid('gdfones','Telefone(s)',$dados,null,null,'ID_FONE',null,null,'modulos/cad_pessoas/telefone.php');
        $grid->setForm($frm,false);
        $grid->setShowAdicionarButton(true);
        $grid->show();
        ?>
         

Essa comunidade não possui posts nesse blog