Ir para o conteúdo

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

Tratar MultiSelect VO/DOA

17 de Julho de 2012, 10:37 , por Desconhecido - | 1 Pessoa seguindo este artigo.
Visualizado 7 vezes

Galera,

 Estou montando um projeto de CheckList  e nele utilizo varios MultiSelects onde o usuario escolhe os itens que estão com problemas, a crise chega ai, como conseguiria fazer para salvar esses dados do multiselect no banco, em testes que fiz verifiquei que ele salva apenas o 1º item que seleciono e ignora os demais selecionados dentro do mesmo multiselect.

Alguém teria uma ideia de como tratar essa informação?

 

Grato.

Autor: Giovane Spengler


55 comentários

  • 51b06d6eae66e2cfdfc361d418eea715?only path=false&size=50&d=404Luis Eugênio barbosa(usuário não autenticado)
    17 de Julho de 2012, 21:26

     

    Giovane,

    neste caso você terá que fazer um loop no array postado do campo multiselect gravando um de cada vez ou então alterar a classe DAO da tabela para receber um array de dados, mas tudo vai depender de como está no modelo de dados. Um exemplo hipotético  se o campo multiselect chamasse cod_item, o loop de gravação ficaria assim:

    $vo = new XVO();
    $dao = new XDAO();

    if( isset($_POST['cod_item'] ) )
    {
        foreach( $_POST['cod_item'] as $cod_item)
        {
            $vo->setCod_item($cod_item);
            $dao->insert($vo);   
        }
    }

    Abraço.

  • 5ff2213e17aa70dce114d0b399086fd3?only path=false&size=50&d=404Giovane Spengler(usuário não autenticado)
    23 de Outubro de 2013, 9:20

     

    Cara,

    Devolta nessa situação, estava com esse projeto parado, agora precisei novamente.

    Seguinte:

    Na tela tem o objeto addSelectField ou addCheckField, que tem uma função onde podemos definir 1 ou mais itens, minha duvida está sendo relacionado ao tratamento desse dados e a recuperação do mesmo do banco para exibir o resultado na tela novamente.

    Tenho uma tabela de avaliação onde tenho que definir situações:

    como exemplo um campo, Utilização do imovel, posso difinir que é 1 e 5, por exemplo. 

    $frm->addSelectField('util_imovel','Util. Imovel:',true,'1=Res. Unifamiliar,2=Res. Multifamiliar,3=Telheiro/Galpão/Barracão,4=Industrial,5=Comercial,6=Especial',false,null,null,true,5,false); 

    quando salvo ele vai apenas o 1 para o banco. 

    Alguém já tem algo semelhante? poderias dar uma dica? 

    • 51b06d6eae66e2cfdfc361d418eea715?only path=false&size=50&d=404Luis Eugênio barbosa(usuário não autenticado)
      25 de Outubro de 2013, 23:57

       

      Giovane,

      para que eu possa lhe ajudar com isso, preciso saber como você está submetendo os dados para a ação gravar? Via POST normal ou via Ajax ?

      Abraço.

      • 5ff2213e17aa70dce114d0b399086fd3?only path=false&size=50&d=404Giovane Spengler(usuário não autenticado)
        29 de Outubro de 2013, 12:00

         

        Estou usando o post normal do framework.

        • 51b06d6eae66e2cfdfc361d418eea715?only path=false&size=50&d=404Luis Eugênio barbosa(usuário não autenticado)
          30 de Outubro de 2013, 21:41

           

          Giovane,

          então será como exemplifiquei acima, você receberá os itens selecionados no $_POST, ai é só fazer o loop e gravar no banco de dados.

          Para ver como os dados estão sendo postados, faça um print_r($_POST) na ação gravar para ter certeza que os valores estão sendo postados.

          Abraço.

Essa comunidade não possui posts nesse blog