Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Daniel A

Ler CSV, Consultar uma de tabelade indices e Gravar tudo

Recommended Posts

boa tarde a todos..... estou com dificuldade em montar esta parte do código ... e se alguém puder me ajudar agradeço !!!!!

 

Vamos lá ..... no código abaixo estou lendo um csv e gravando no banco  ... até aí blz ... mas o que preciso!!!! ..... o código precisa consultar uma outra tabela (hotel) onde possui CNPJ e Nome  .... no CSV vem só o nome .....  preciso que ele puxe o CNPJ e grave tudo junto .........

 

Segue meu código abaixo ....... Obrigado!!!!!

 

nome das tabelas -> import   onde devem ser gravadas as informações completas

                                 -> hotel  consulta de nome e cnpj

 

 

Váriavel de consulta (nome) ->  $descr  

Váriavel que preciso preencher (CNPJ) -> $cnpj

 

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

 

<HTML>
    <HEAD>
        <TITLE>Manipulação de Arquivos</TITLE>
    </HEAD>
    <BODY>
        
<?php
    //conexão com o banco de dados
    $connection = new PDO("mysql:host=localhost;dbname=txdoc", "root", "");
    
    
    
   $arquivo = $_FILES["file"]["tmp_name"];
   $nome = $_FILES["file"]["name"];
   
   $ext = explode(".", $nome);
   
   $extensao = end($ext);
   
   if ($extensao != "csv"){
       
       echo "Extenção Inválida";
       
   }else {
       
       $objeto = fopen($arquivo,'r');
       
       $cabecalho = true;
              
        while (($dados = fgetcsv($objeto, 10000, ";")) !== FALSE)
            
            {
                
                if ($cabecalho) {
                    $cabecalho = false;
                    continue;
                    
                }    
                    
                    
                $data            = utf8_encode($dados[0]);
                $nome_port        = utf8_encode($dados[1]);
                $num_func        = utf8_encode($dados[2]);
                $num_cart        = utf8_encode($dados[3]);
                $cont_mae        = utf8_encode($dados[4]);
                $tip_trans        = utf8_encode($dados[5]);
                $descr            = utf8_encode($dados[6]);
                $cred_deb        = utf8_encode($dados[7]);
                $nome_moeda        = utf8_encode($dados[8]);
                $cod_moeda        = utf8_encode($dados[9]);
                $r_estb            = utf8_encode($dados[10]);
                $local            = utf8_encode($dados[11]);
                $val_trans        = utf8_encode($dados[12]);
                $val_dollar        = utf8_encode($dados[13]);
                $nome_ciaaerea    = utf8_encode($dados[14]);
                $nome_pass        = utf8_encode($dados[16]);
                $bilhete1        = utf8_encode($dados[16]);
                $bilhete2        = utf8_encode($dados[17]);
                $bilhete3        = utf8_encode($dados[18]);
                $bilhete4        = utf8_encode($dados[19]);
                $cod_iata        = utf8_encode($dados[20]);
                $c_custo        = utf8_encode($dados[21]);
                $cnpj            = utf8_encode($dados[22]);
                $val_reais        = utf8_encode($dados[23]);
                
   /*         
        $rs = $connection->prepare("SELECT * FROM hotel where nome = $descr ");
      
        if($rs->execute())
      {
        $registro = $rs->fetch(PDO::FETCH_OBJ)
        
          echo "<TR>";
          echo "<TD>".$registro->cnpj."</TD>";
          echo "</TR>";
        
      }
      else
      {
       
      }
    

*/            
                
            $stmt = $connection->prepare("INSERT INTO import (data,nome_port,num_func,num_cart,cont_mae,tip_trans,descr,cred_deb,nome_moeda,cod_moeda,r_estb,local,val_trans,val_dollar,nome_ciaaerea,nome_pass,bilhete1,bilhete2,bilhete3,bilhete4,cod_iata,c_custo,cnpj,val_reais) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");            
            
            $stmt->bindParam(1, $data);
            $stmt->bindParam(2, $nome_port);
            $stmt->bindParam(3, $num_func);
            $stmt->bindParam(4, $num_cart);
            $stmt->bindParam(5, $cont_mae);
            $stmt->bindParam(6, $tip_trans);
            $stmt->bindParam(7, $descr);
            $stmt->bindParam(8, $cred_deb);
            $stmt->bindParam(9, $nome_moeda);
            $stmt->bindParam(10, $cod_moeda);
            $stmt->bindParam(11, $r_estb);
            $stmt->bindParam(12, $local);
            $stmt->bindParam(13, $val_trans);
            $stmt->bindParam(14, $val_dollar);
            $stmt->bindParam(15, $nome_ciaaerea);
            $stmt->bindParam(16, $nome_pass);
            $stmt->bindParam(17, $bilhete1);
            $stmt->bindParam(18, $bilhete2);
            $stmt->bindParam(19, $bilhete3);
            $stmt->bindParam(20, $bilhete4);
            $stmt->bindParam(21, $cod_iata);
            $stmt->bindParam(22, $c_custo);
            $stmt->bindParam(23, $cnpj);
            $stmt->bindParam(24, $val_reais);
            
            
            $stmt->execute();
            }
       
       if($stmt){
           
           echo "Dados inseridos com sucesso!!!";
           
       }else {
           
            echo "Erro !!!";
       }
       
       
       
   }
   
   
   
   
    
?>
        
    </BODY>
</HTML>

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por FabianoSouza
      Eu gostaria de contar com a experiência dos colegas para sanar a seguinte dúvida.
       
      Estou em dúvida se crio procedures específicas para fazer INSERT e outra para fazer UPDATE no banco, ou se utilizo a mesma procedure para realizar as duas operações.
      A dúvida é mais em relação a "técnica" ou "metodologia", do que codificação.
       
      Penso que ter apenas 01 procedure que pode realizar as duas operações ajuda a manter certo padrão (já que as variáveis seriam as mesmas para as duas operações) e facilita a manutenção.
      Porém, numa situação de UPDATE eu tenho um parâmetro adicional que é o ID do registro que vou querer atualizar. Na operação de INSERT não existe esse parâmetro (pq o registro ainda não existe no bd).
       
      Então seria esse o meu dilema...saber dos colegas, qual abordagem faz mais sentido. Isso é importante porque tenho dezenas de procedures no meu projeto. Não me importo em fazer ajustes em todas, mas queria definir o melhor método (considerando o cenário acima citado) para implementar como padrão.
       
      Grato.
    • Por Kefatif
      Prezados, bom dia.
       
      Preciso da ajuda dos Srs!
       
      Não estou conseguindo localizar o erro no arquivo abaixo.
       
      Ao clicar no botão ele me envia a mensagem: "Erro ao registrar estoque !"
       
      Poderiam me ajudar?
       
      Agradeço desde já pela ajuda.
       
      <?php include_once 'autenticacao.php'; include_once'../../conexao.php'; include_once '../../funcoes.php'; include_once '../../decodepost.php'; if( !isset($_POST["cont"]) or !isset($_SESSION["cnes"]) ){ ECHO "Erro"; }else{ $cnes = $_SESSION["cnes"]; $idusuario = $_SESSION["idusuario"]; $cont = $_POST["cont"]; $sql = "insert into LESAO_ESTOQUE values(null,curdate(), '".$cnes."',".$idusuario.")"; if(mysqli_query($con, $sql)){ $idestoque = mysqli_insert_id($con); $coberturas = 0; for($i=1 ; $i<=$cont; $i++){ if(isset($_POST[$i])){ if($_POST[$i]<=0){ }else{ $qtd = $_POST[$i]; $sqlqtd = "insert into LESAO_REL_ESTOQUE_COBERTURAS values(".$idestoque.", ".$i.", ".$qtd.", ".$idusuario.")"; if(mysqli_query($con, $sqlqtd)){ $coberturas = $coberturas+1; } } } } $grav = "Registrado estoque de ".$coberturas." coberturas !"; }else{ $grav = "Erro ao registrar estoque !"; } //5- Fechar a conexão mysqli_close($con); ?> <script> alert('<?php echo $grav; ?>'); location.href="estoque-registrar.php"; </script> <?php } ?>  
    • Por lezão
      Bom dia, galera!
      Tudo bem com vcs?
       
      Tenho uma tabela Itens com os campos Descrição e nome do produto, quando eu coloco no select.
      Eu gostaria que me retorna-se, todos os nomes dos produtos e retornar apenas uma vez a Descrição.
       
      Select com ORDER BY
      "SELECT DISTINCT c.id, c.descricao, i.id_categoria, i.descricao_produto, i.id_item, i.nome_produto, i.imagem, i.preco, i.qntdade FROM tab_categoria AS c JOIN tab_itens AS i ON c.id = i.id_categoria WHERE c.id = i.id_categoria AND i.id_empresa = '$id_empresa' ORDER BY c.descricao" Select com GROUP BY,  até da certo, mas retorna apenas um produto.
      "SELECT DISTINCT c.id, c.descricao, i.id_categoria, i.descricao_produto, i.id_item, i.nome_produto, i.imagem, i.preco, i.qntdade FROM tab_categoria AS c JOIN tab_itens AS i ON c.id = i.id_categoria WHERE c.id = i.id_categoria AND i.id_empresa = '$id_empresa' GROUP BY c.descricao"  
      Veja como esta ficando do jeito que eu estou fazendo, com ORDER BY
      Select_com_ORDER_BY  
       
      E com o GROUP BY
      Select_com_GROUP_BY
       
    • Por biakelly
      Olá Tudo bem?
       
      Poderiam me ajudar com a seguinte condição:
      <?php if ($row['facebook'] != "") { echo '<a class="btn btn-dark btn-social mx-2" href="<?php echo $row['facebook']; ?>"><i class="fab fa-facebook-f"></i></a>'; } else { echo ''; } ?>  
      Estou recebendo o seguinte erro:
      Parse error: syntax error, unexpected 'facebook' (T_STRING), expecting ';' or ',' in C:\xampp\htdocs\biazinha\inicial.php on line 371
       
       
      A linha 371 é essa:
      echo '<a class="btn btn-dark btn-social mx-2" href="<?php echo $row['facebook']; ?>"><i class="fab fa-facebook-f"></i></a>';  
       
       
    • Por Hamilcar
      Bom dia!
      Peguei um sistema para atualizar para funcionar, o problema é que foi criado uma ligação de tabelas meio louca aqui, vou tentar explicar, tem uma tabela usuários que tem um id, e tem uma outra tabela em que a usuários é ligada e nela pode ter um ou mais usuários, o problema é que foi colocado os ids na mesma linha separados por um caracter, e os usuários se repetem, vou colocar abaixo para exemplificar:
      Tabela Usuarios/id 
                   id1, id2, id3...
       
      Tabela Escala
                  id_escala1_idUser -> id1|id2|id3...
                  id_escala2_idUser -> id1|id2|id3...
       
      Como vou gastar um tempo para refazer novamente o banco de dados, queria fazer funcionar momentaneamente, e gostaria da ajuda para tentar se possível fazer uma consulta que me traga todos os usuarios listados na tabela escala
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.