Jump to content
WagnerFilho

Importar csv para duas tabelas MYSQL - Codeigniter

Recommended Posts

Olá, com a simples função abaixo, consigo importar dados para uma tabela do mysql.

A questão é que a coluna telefone ficará em outra tabela e da forma que está hoje, só consigo importar para a mesma tabela.

Como posso fazer para importar as colunas de um arquivo csv para uma tabela e a coluna telefone importar para outra tabela ?

 

public function upload_file(){
    $tipo = array('application/vnd.ms-excel','text/plain','text/csv','text/tsv');
    if(!empty($_FILES['file']['name']) && in_array($_FILES['file']['type'],$tipo)){
        if(is_uploaded_file($_FILES['file']['tmp_name'])){

            // abre o arquivo csv carregado com o modo somente leitura
            $arquivo = fopen($_FILES['file']['tmp_name'], 'r');

            // pula a primeira linha
            // se o arquivo csv não tiver cabeçalho, apenas comente a próxima linha
            fgetcsv($arquivo);

            // analisar dados do arquivo csv linha por linha
            while(($coluna = fgetcsv($arquivo)) !== FALSE){
                // verifica se o membro já existe no banco de dados com o mesmo email
                $result = $this->db->get_where("tb_pessoa", array("email"=>$coluna[1]))->result();
                if(count($result) > 0){
                    // atualiza os dados da pessoa
                    $this->db->update("tb_pessoa", array("nome"=>$coluna[0], "telefone"=>$coluna[2], "dt_inclusao"=>$coluna[3], "status"=>$coluna[4]), array("email"=>$coluna[1]));
                }else{
                    // inserir dados da pessoa no banco de dados
                    $this->db->insert("tb_pessoa", array("nome"=>$coluna[0], "email"=>$coluna[1], "telefone"=>$coluna[2], "dt_inclusao"=>$coluna[3], "status"=>$coluna[4]));
                }
            }

            //close opened csv file
            fclose($arquivo);

            $qstring["status"] = 'Success';
        }else{
            $qstring["status"] = 'Error';
        }
    }else{
        $qstring["status"] = 'Invalid file';
    }
    $this->load->view('csvToMySQL',$qstring);
}

 

 

tabelas

tb_pessoa
nome varchar(100) NOT NULL
email varchar(100) NOT NULL
telefone varchar(100) NOT NULL
dt_inclusao timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
status varchar(100) NOT NULL

tb_telefone
telefone varchar(100) NOT NULL
pessoa_id int(11) NOT NULL

Share this post


Link to post
Share on other sites
Citar

 

Não é possível fazer múltiplos inserts através de um statement, porém dentro de uma transaction sim:


BEGIN TRANSACTION
   INSERT INTO Tabela1 (Coluna1, ...) VALUES (....);
   INSERT INTO Tabela2 VALUES (..., LAST_INSERT_ID());
COMMIT

Fonte: https://pt.stackoverflow.com/questions/107739/fazer-insert-em-duas-tabelas-ao-mesmo-tempo

 

 

Creio que este método possa resolver seu problema.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By granderodeo
      Olá tenho a página index.php e tenho a página product.php, ao clicar no produto na página inicial, quero que redirecione para página product.php mostrando os dados do determinado produto que cliquei, iniciei o código mais não está dando certo, Obrigado.
       
      index.php
      <?php if (is_array($products)) { foreach ($products as $id => $row) { ?> <div class="col-sm-6 col-md-4 col-lg-3 mb-2"> <div class="card-deck"> <div class="card p-2 border-secondary mb-2"> <a href="product.php?id=<?= $row['product_id'] ?>"> <div class="hover-image"> <img class="card-img-top border-secondary" src="images/<?= $row['product_image'] ?>"/> <a href="#"><span class="texto"></span></a> </div> </a> <h3 class="text-center"><?= $row['product_name'] ?></h3> <div class="text-center text-black rounded p-1" style="font-size: 20px;">Valor&nbsp;$<?= $row['product_price'] ?></div> <button class="btn btn-success btn-block" type="button" value="Add to cart" onclick="cart.add(<?= $row['product_id'] ?>);">Adicionar ao carrinho</button> </div> </div> </div> <?php } } else { echo "No products found."; } ?>  
      product.php
      <?php $products = $_GET["product_id"]; if (is_array($products)) { foreach ($products as $id => $row) { }}; $row['product_name'] ?>  
    • By Koromon
      Olá amigos, preciso de uma ajuda
      Quero utilizar o comando 
      SET SQL_SAFE_UPDATES = 0; depois, quero usar um comando de substituição de caractere
       
      UPDATE tabela SET coluna = REPLACE (coluna, 'caractere_antigo' , 'novo_caractere'); e pra finalizar:
      SET SQL_SAFE_UPDATES = 1; para voltar ao modo "SQL_SAFE_UPDATES" original;  
      se eu só colocar pra rodar, o Mysql só considera a minha ultima linha de comando, o "SET SQL_SAFE_UPDATES = 1;"
      Então, pra dar certo, eu teria que realizar uma linha de cada vez.
      Pesquisei na internet e achei o comando WAITFOR DELAY, mas o meu mysql retorna a seguinte mensagem:
      Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near WAITFOR DELAY '00:00:01'; at line 1;
      Alguém sabe uma solução?
       
      O script utilizado foi:
      SET SQL_SAFE_UPDATES = 0; WAITFOR DELAY '00:00:01'; UPDATE tabela SET coluna = REPLACE (coluna, 'caractere_antigo' , 'novo_caractere'); SET SQL_SAFE_UPDATES = 1;  
    • By izacgaldino
      Olá pessoal esse é meu primeiro tópico então me desculpem por qualquer coisa.
       
      Depois de uma longa busca quase sem resultados venho buscar ajuda aqui. Tenho uma necessidade que é de automatizar minha área de pagamentos onde uma vez por mês tenho que fazer muitas transferências bancárias manualmente, preciso de uma forma de automatizar isso. Eu recebo pagamentos pelo pagseguro mas após um tempo preciso transferir uma % desses valores para outras contas. 
       
      Nos meus resultados encontrei a ferramenta TRANSFEERA, ela é nova e encontrei pouco conteúdo sobre ela.
       
      Vocês teriam alguma sugestão?
    • By Gabriel_Miranda
      Estou criando um carrinho de compras para depois implementa - lo em um projeto, mas acabei travando na quantidade dos produtos.
      Como posso obter a quantidade de produtos que o cliente deseja levar e armazena-las no carrinho para depois fazer os cálculos?
      Sou novo em PHP e ainda estou aprendendo.
      <pre> <?php include('conect.php'); session_start(); $totalCar = 0; // CRIA O ARRAY CARRINHO if(!isset($_SESSION['carrinho'])){ $_SESSION['carrinho'] = array(); } // ADICIONA OS PRODUTOS if(isset($_GET['id'])){ //ADICIONAR CARRINHO $id = intval($_GET['id']); if(!isset($_SESSION['carrinho'][$id])){ $_SESSION['carrinho'][$id] = 1; } } // MOSTRA E PUXA AS INFORMACOES DO BANCO if(count($_SESSION['carrinho']) == 0){ echo "carrinho vazio<br>"; echo "<a href='index.php'>voltar</a>"; }else{ $_SESSION['dados'] = array(); foreach ($_SESSION['carrinho'] as $id => $qtd) { $query = $mysqli->query("select * from produtos2 where id = $id"); echo $mysqli->error; while ($tabela=$query->fetch_assoc()) { echo "Nome: $tabela[nome]<br>"; echo "Quantidade: <input type='number' value='$qtd'><br>"; echo "Preco: ".$tabela['preco'] * $qtd."<br>"; echo "<a href='remove.php?id=$id'>Remover</a><br><hr><br>"; $totalCar += $tabela['preco']; } array_push($_SESSION['dados'], array( 'idProd' => $id, ) ); } echo "<a href='index.php'>voltar</a><br><br>"; echo "Total do carrinho: $totalCar<br><br>"; } ?> </pre>  
    • By joaovitor102
      <?php require_once '../App/auth.php'; require_once '../layout/script.php'; require_once '../App/Models/vendas.class.php'; require_once '../App/Models/cliente.class.php'; require_once '../App/Models/connect.php'; require '../layout/alert.php'; echo $head; echo $header; echo $aside; echo '<div class="content-wrapper"> <!-- Content Header (Page header) --> <section class="content-header"> <h1> Todos os produtos </h1> <ol class="breadcrumb"> <li><a href="../"><i class="fa fa-dashboard"></i> inicio</a></li> <li class="active">Itens</li> </ol> </section> <!-- Main content --> <section class="content"> '; echo " <form action='../App/Database/Vervendas.php' method='post'> <div class='form-group has-feedback'> <input type='number' name='Dia' style='width:50px;' id='dia' placeholder='dia'><b>/</b> <input type='number' name='Mes' style='width:50px;' id='mes' placeholder='mes'><b>/</b> <input type='number' name='Ano' style='width:100px; id='ano''placeholder='ano'> <button type='submit'>Envia</button> </div> </form> "; echo '</div>'; echo '</section>'; echo '</div>'; echo $footer; echo $javascript; ?> public function ListaVendas($dia,$mes,$ano){ $item="SELECT * FROM `itens`,`Vendas`,`produtos` WHERE `iditem`=`idItens` and `Produto_CodRefProduto`=`CodRefProduto` and `datareg`='$ano'-'$mes'-'$dia'"; return $item; } <?php require_once '../../App/auth.php'; require_once '../../App/Models/vendas.class.php'; if(isset($_POST['dia']) && isset($_POST['mes']) && isset($_POST['ano'])) { $dia=$_POST['dia']; $mes=$_POST['mes']; $ano=$_POST['ano']; $vendas=new Vendas; $dados=$vendas->ListaVendas($dia,$mes,$ano); $limite=mysql_query("$dados"); while ($dados =mysql_fetch_array($limite) ) { $valor=$dados['valor']; $data=$dados['datareg']; $produto=$dados['NomeProduto']; echo "<div > <td>valor:' . $valor . '</td> <td>dia:' . $data. '</td> <td>nome produto:' . $produto . '</td>'; </div>"; $valores+=$valores; } echo "<div> <td>'.$valores.'</td> </div>"; } else{exit;} ?> esta dando erro no programa
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.