Jump to content


Photo

problemas ao inserir array em banco de dados

array banco de dados pdo

  • Faça o login para participar
1 reply to this topic

#1 marcos223

marcos223

    Novato no fórum

  • Usuários
  • 14 posts
  • Sexo:Masculino
  • Localidade:sapucaia do sul

Posted 03/01/2017, 12:51

estou desenvovendo um sistema da cadastro de informações com campos dinamicos mas não estou conseguindo inserir os dados do post na banco de dados corretamente.

desta maneira as informações do array são inseridas com string e o id no SELECT_LAST_ID  é gravado com zero. se puderm me ajudar.

desde já eu agradeço a atenção de todos.

 

enviando as informações

 

<form action="?pag=imprimir" method="post" target="_blank">        
            
            <input type="hidden" name="tesoureiro" value="<?php echo $_POST['tes'];?>">
            <input type="hidden" name="auxiliar" value="<?php echo $_POST['aux'];?>">
            <input type="hidden" name="data" value="<?php echo $_POST['data'];?>">
            <input type="hidden" name="turno" value="<?php echo $_POST['turno'];?>">
            <input type="hidden" name="presente" value="<?php echo $_POST['presente'];?>">
            <input type="hidden" name="oferta" value="<?php echo $_POST['oferta'];?>">            
            <input type="hidden" name="membros[]" value="<?php $_SESSION['membros'] = $_POST['nome'];?>">
            <input type="hidden" name="dizimo[]" value="<?php $_SESSION['dizimo'] = $_POST['valor'];?>">
            
            <div class="submit">
        <input type="hidden" name="acao" value="enviar" />
        <button type="submit"  class="btn botao" > Salvar</button>
      </div>

 

resgatando as informações

 

    if(isset($_POST['acao']) && $_POST['acao'] == 'enviar'){
     $tesoureiro = strip_tags(filter_input(INPUT_POST, 'tesoureiro'));
     $auxiliar = strip_tags(filter_input(INPUT_POST, 'auxiliar'));
     $data = strip_tags(filter_input(INPUT_POST, 'data'));
     $DFm = explode("/",$data);
     $dataFormatada = $DFm[2].'/'.$DFm[1].'/'.$DFm[0];
     $turno = strip_tags(filter_input(INPUT_POST, 'turno'));
     $presente = strip_tags(filter_input(INPUT_POST, 'presente'));
     $oferta = strip_tags(filter_input(INPUT_POST, 'oferta'));
     $nome = $_SESSION['membros'];
     $dizimo = $_SESSION['dizimo'];

 

}

 

inserindo no bando de dados

 

 $dados = array('tesoureiro' => mb_convert_case($tesoureiro, MB_CASE_TITLE, "UTF-8"),
                    'auxiliar' => mb_convert_case($auxiliar,MB_CASE_TITLE, "UTF-8"),
                    'data' => $dataFormatada,
                    'turno' => mb_convert_case($turno, MB_CASE_TITLE, "UTF-8"),
                    'presente' => $presente);                   
                    if($user -> inserir('tbl_culto', $dados)){            
                        
    $diz = array('id_culto' =>  SELEC_LAST_ID FROM tbl_culto,
                 'nome' => mb_convert_case(implode(' , ',$nome), MB_CASE_TITLE, "UTF-8"),
                 'dizimo' => implode(',',$dizimo));
                            $user -> inserir('tbl_dizimo', $diz);                        
                    @$msg = "Culto do dia <strong>'".mb_convert_case($data,MB_CASE_TITLE, "UTF-8")."'</strong> cadastrado com sucesso!!!";                            
                    }else{
                        $msg = "Falha ao cadastrar culto <strong>'".mb_convert_case($tesoureiro.' '.$data,MB_CASE_TITLE, "UTF-8")."'</strong> <br> tente novamente.";
                    }

 

 

classe de inserir no banco

 

public function inserir($tabela,$dados){
        $pegarCampos = array_keys($dados);
        $contarCampos = count($pegarCampos);
        $pegarValores= array_values($dados);
        $contarValores= count($pegarValores);    
        
        $sql = "INSERT INTO $tabela(";
        if($contarCampos == $contarValores){
        foreach($pegarCampos as $campos){
                $sql .= $campos.', ';
            }
            $sql = substr_replace($sql, ")", -2, 1);
            $sql .= "VALUES (";
            for(@$i = 0; $i < @$contarValores; $i++){
                $sql.= "?, ";
                $i;
            }
            $sql = substr_replace($sql, ")", -2, 1);
        }else{
            return false;
        }
        try{
            $inserir = self::conn()->prepare($sql);
            if($inserir ->execute($pegarValores)){
                return true;
            }else{
                return false;
            }
        }catch(PDOException $e){
            return false;
        }
    }
  



#2 marcos223

marcos223

    Novato no fórum

  • Usuários
  • 14 posts
  • Sexo:Masculino
  • Localidade:sapucaia do sul

Posted 11/01/2017, 17:36

Resolvi o problema retirando a classe de inserção e instanciando uma conexão simples para a inserção dos dados do array, está totalmente funcional
  <?php
  $pdo = new PDO('mysql:host=localhost;dbname=videira','root','');
  $pdo ->exec("set names utf8");

    if(isset($_POST['acao']) && $_POST['acao'] == 'enviar'){
     $tesoureiro = strip_tags(filter_input(INPUT_POST, 'tesoureiro'));
     $auxiliar = strip_tags(filter_input(INPUT_POST, 'auxiliar'));
     $data = strip_tags(filter_input(INPUT_POST, 'data'));
     $DFm = explode("/",$data);
     @$dataFormatada = $DFm[2].'/'.$DFm[1].'/'.$DFm[0];
     $turno = strip_tags(filter_input(INPUT_POST, 'turno'));
     $presente = strip_tags(filter_input(INPUT_POST, 'presente'));
     $oferta = strip_tags(filter_input(INPUT_POST, 'oferta'));
     $nome = $_SESSION['membros'];
     $dizimo = $_SESSION['dizimo'];
     $celula = $_SESSION['celulas'];
     $oferta_celula = $_SESSION['oferta_celula'];
     $total_oferta_cel = strip_tags(filter_input(INPUT_POST, 'oferta_cel'));
     $total_oferta = strip_tags(filter_input(INPUT_POST, 'total_oferta'));
     $total_dizimo = strip_tags(filter_input(INPUT_POST, 'total_dizimo'));
     $total = strip_tags(filter_input(INPUT_POST, 'total'));    
    
     $dados = array('tesoureiro' => mb_convert_case($tesoureiro, MB_CASE_TITLE, "UTF-8"),
                    'auxiliar' => mb_convert_case($auxiliar,MB_CASE_TITLE, "UTF-8"),
                    'data' => $dataFormatada,
                    'turno' => mb_convert_case($turno, MB_CASE_TITLE, "UTF-8"),
                    'presente' => $presente,
                    'total_oferta' => $total_oferta,
                    'total_oferta_cel' => $total_oferta_cel,
                    'total_dizimo' => $total_dizimo,
                    'total' => $total);
    
                    
                    if($user -> inserir('tbl_culto', $dados)){    
                    
                    
                        $query = @BD::conn()->prepare("SELECT id FROM tbl_culto ORDER BY id DESC LIMIT 1");
                        @$query->execute();
                        if($query -> rowCount() == 0){
                            $msg = "Nenhum culto cadastrado";

                        }else{
                        while($ex = $query -> fetchObject()){
                        
                        $id = $ex -> id;
                        $valores = $nome;
                        $diz = $dizimo;
                        for ( $i = 0, $total = count( $valores ), $total = count($diz);$i < $total; $i++ ){
                            $pdo->query( "INSERT INTO tbl_dizimo(id_culto,nome,dizimo) VALUES('$id','$valores[$i]','$diz[$i]')" );
                        }
                        $cel = $celula;
                        $off_celula = $oferta_celula;
                        for ( $i = 0, $total = count( $cel ), $total = count($off_celula);$i < $total; $i++ ){
                            $pdo->query( "INSERT INTO tbl_oferta(id_culto_cel,celula,oferta) VALUES('$id','$cel[$i]','$off_celula[$i]')" );
                        }
                    }
                        
                        
                        }    
                    $msg = "Culto do dia <strong>'".mb_convert_case($data,MB_CASE_TITLE, "UTF-8")."'</strong> cadastrado com sucesso!!!";                            
                    }else{
                        $msg = "Falha ao cadastrar usuário <strong>'".mb_convert_case($tesoureiro.' '.$data,MB_CASE_TITLE, "UTF-8")."'</strong> <br> tente novamente.";
                    }                    
                }


Edição feita por: marcos223, 11/01/2017, 17:37.






Veja alguns posts relacionados com: array, banco de dados pdo

1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq