Ir para o conteúdo

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

Gride e Banco de dados

6 de Junho de 2014, 16:34 , por Desconhecido - | 1 Pessoa seguindo este artigo.
Visualizado 16 vezes
Boa tarde pessoal.

Alguém pode me dizer se é possível salvar a linha do gride abaixo no banco de dados ?

A idéia é que a cada escolha do usuário ( campo select - sim, não) seja disparado o evento “SalvarItem” e a respectiva linha do GRIDE seja atualizada na tabela correspondente.

 

$AntFam = TPDOConnection::executesql(' select * from tabela_etc e tal ');  //

$gAF = new MeuGride('grideAntFam','Antecedentes familiares',$AntFam, null, null, 'ID_TABELA', 'ID_TABELA, COD_FAMILIA, CAMPOSIMNAO' );

       

        $gAF->addColumn( 'id_tabela','ID',10,'left' );

        $gAF->addColumn( 'cod_familia','Cod Familia',50,'left' );

        $gAF->addSelectColumn('camposimnao','sim não',true, TabsimnaoDAO::SelectAll('DESCRICAOSIMNAO'), null, null,null,null,null,null,'')->addEvent('onChange','SalvarItem(this)');

 

function SalvarItem()

{

            ??????

 }

     

 

Caso não seja possível, qual seria a melhor estratégia para salvar as possíveis alterações em cada linha do gride?

 

Desde já muito obrigado.

 

Autor: André Generino


33 comentários

  • E94fe6685924362065d9f41705f78a3e?only path=false&size=50&d=404André Generino(usuário não autenticado)
    6 de Junho de 2014, 16:37

     

    Na verdade gostaria de saber como fica o código dentro da função

    function SalvarItem()

    {

    ?????

    }

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

       

      André,

      segue abaixo um exemplo de como isso deve ser implementado. Como não tenho sua tabela aqui, criei um array $AntFam para simular o banco de dados. Você também poderá criar a action/gravarSimNao.php e utilizar o $frm->processAction().

      Abraço:

      <?php
      // processar ação ajax
      if( $_POST['formDinAcao'] == 'gravarSimNao')
      {
          // aqui voce deverá gravar os dados postados no banco de dados
         
          echo 'Gravar no banco de dados:'.PHP_EOL;
          echo 'id_tabela:'.$_POST['id_tabela'].PHP_EOL;
          echo 'campossimnao:'.$_POST['sn'];
          // criar o método abaixo no arquivo TabsimnaoDAO
          //TabsimnaoDAO::atualizarSimNao($_POST['id_tabela'],$_POST['sn']);
          //echo 'Dados Gravados com SUCESSO!';
          sleep(1);
          die; // fim da ação ajax
         
      }

      $frm= new TForm('Exemplo Gravação Ajax',300,600);
      $frm->addHtmlField('campo_gride');
      $AntFam = null;
      $AntFam['ID_TABELA'][]         = 10;
      $AntFam['COD_FAMILIA'][]     ='F21';
      $AntFam['CAMPOSIMNAO'][]     ='S';
      $AntFam['ID_TABELA'][]         = 11;
      $AntFam['COD_FAMILIA'][]     ='F22';
      $AntFam['CAMPOSIMNAO'][]     ='N';

      $gAF = new TGrid('grideAntFam','Antecedentes familiares',$AntFam, null, null, 'ID_TABELA', 'ID_TABELA, COD_FAMILIA, CAMPOSIMNAO' );
      $gAF->addColumn( 'id_tabela','ID',10,'left' );
      $gAF->addColumn( 'cod_familia','Cod Familia',50,'left' );
      $gAF->addSelectColumn('camposimnao','sim não',true, array('S'=>'Sim','N'=>'Não'), null, null,null,null,null,null,'')->addEvent('onChange','SalvarItem()');

      $frm->set('campo_gride',$gAF);
      $frm->show();
      ?>

      <script>
      function SalvarItem(e)
      {
          var simNao = e.value; // valor do campo select
          var id_tabela = jQuery(e).attr('id_tabela'); // a classe TGride adiciona a chave do gride no elemento input como um atributo
          fwAjaxRequest(
          {
                 'action':'gravarSimNao', // ação que será executada pelo formulário
                 'data':{"sn":simNao,'id_tabela':id_tabela}, // campos que serão postados
                 'async':false, // bloquear a tela enquanto grava
                 'dataType':'text', // resposta será texto
                 'msgLoading':'Gravando. Aguarde...', // mensagem durante o processamento, se async for false
                 'module':null, // modulo que será que receberá a ação. o padrão é o módulo atual
                 'callback':function(resultado) // função callback que receberá o resultado do processamento
                 {
                  alert( resultado );
                 }
          })   
      }
      </script>   
       

      • E94fe6685924362065d9f41705f78a3e?only path=false&size=50&d=404André Generino(usuário não autenticado)
        30 de Junho de 2014, 12:04

         

        Luis,

        Obrigado pelas respostas.

        Infelizmente, ainda não consegui resolver um probleminha básico: não estou conseguindo fazer a "addSelectColumn" carregar os dados que vem do banco de dados. Ela simplesmente não funciona. Acredito que é um dificuldade minha. Vou tentar mais vezes. Se não conseguir, volto a postar já com os exemplos pontuais.

        Se conseguir, vou postar a solução que encontrada.

        Mais uma vez, muito obrigado.

Essa comunidade não possui posts nesse blog