Jump to content
BryanSamuel

importação de xls ou csv para mysql

Recommended Posts

Eu gostaria de importar dados de uma planinha que esteja em .xls para mysql, por exemplo, tem uma página html simples onde o usuário vai enviar a planilha, e com isso eu quero importar para uma base de dados, mas tem um porém, por exemplo, tem uma coluna com o número da matrícula de cada aluno, eu gostaria de fazer uma verificação, para que se já existisse um aluno com a matrícula igual, atualizasse somente determinadas colunas, como por exemplo, a coluna turma e a coluna turno, eu sei que parece pedir demais mas eu sou bem novato em php e mysql, se alguém puder ajudar agradeço desde já, abraço. 

obs. de preferência, se tiver como importar direto de .xls eu agradeço, mas caso só de com .csv também serve

Share this post


Link to post
Share on other sites

Para podermos te ajudar mais, seria interessante mandar uma base de um dos arquivos para vermos, o PHP pode ler os dados, ele organiza por linha todo conteúdo que entra, se colocar que na linha 1 terá o nome de todas as tabelas e nas demais os resultados, só faltará criar as rotas para adicionar o conteúdo.

$array = Array();
$file = fopen('caminho/arquivo.csv', 'r');
while (($line = fgetcsv($file)) !== false)
{
  $array[] = $line;
}
fclose($file);
var_dump($array);

Poderá usar esse código como base para inicio dos estudos

Boa sorte!

Share this post


Link to post
Share on other sites

Já adiantando, vou dar um exemplo, eu tenho um arquivo csv nele contém 8 colunas, na primeira coluna é o id, na segunda o nome, na terceira o número da matrícula, na quarta a sala, na quinta a turma, na sexta o dia(por exemplo segunda feira), na sétima o horário e na oitava o professor.

Todas as linhas estão desta forma, iguais, desde a primeira linha só contém os dados, não tem um cabeçalho nem nada do tipo.

Share this post


Link to post
Share on other sites

Eu consigo importar o arquivo normalmente, eu salvo o diretório do arquivo no banco de dados e tudo mais, mas o que eu quero é pegar esse arquivo que eu salvei, pegar os dados e inserir no meu banco de dados.

Eu vou dar uma olhada nesse código, interpretar e tentar aplicar, obrigado de qualquer forma.

Share this post


Link to post
Share on other sites

Eu consegui importar com o seguinte código:

$tabela = "alunos"; //tabela do banco
		$arquivo = "$diretorio"; // aquivo a ver importado csv do execel

		$arq = fopen($arquivo,'r');// le o arquivo txt

		while(!feof($arq))
		for($i=0; $i<1; $i++){
		if ($conteudo = fgets($arq)){//se extrair uma linha e não for false
		@$ll++; // $ll recebe mais 1 ==== em quanto o existir linha sera somada aqui
		$linha = explode(';', $conteudo);// divide por coluna onde tiver ponto e virgula
		}

		$sql = "INSERT INTO $tabela (id, nome, matricula, sala, turma, dia, hora, professor) VALUES ('$linha[0]','$linha[1]','$linha[2]','$linha[3]','$linha[4]','$linha[5]','$linha[6]','$linha[7]')";
		$result = mysqli_query($con,$sql);
		$linha = array();// linpa o array de $linha e volta para o for
		}
		echo "quantidade de linhas importadas = ".$ll;

mas ele retorna erros na página, " Notice: Undefined offset: 0 in C:\wamp\www\importar_script.php on line 42" ;

 Até o offset:7.

Eu verifiquei, ele importou os dados corretamente mas isso pode acarretar em um problema posteriormente? tem algum erro no código?

Share this post


Link to post
Share on other sites

Como o próprio erro diz, isso é apenas um aviso de que o offset solicitado não foi encontrado !

Ele deve estar rodando o while em conteúdo nulo !

Lá no começo do while adicione a linha

<?php
if(!isset($linha) && $linha == NULL)
  continue;

 

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 proflupin
      criei uma página que busca alguns dados no BD e retornar em forma de collapse. Como existe um WHILE executando o collapse, ele sempre o executa com o mesmo ID, ou seja, se eu tiver 20 collapse, todos vão ser abertos ao clicar no primeiro.
      A dúvida é, como eu posso criar um novo ID para o collapse a cada loop do While?
      Código:
       
      <?php while($result_inners = mysqli_fetch_object($result_inner)){ ?> <div class="card-footer "> <a class="text-muted" data-toggle="collapse" href="#collapse1" role="button" aria-expanded="false" aria-controls="collapseExample"> <i class="fas fa-comment-alt"></i> <?php if(!empty($result_inners->nome_completo)) echo $result_inners->nome_completo . " respondeu..."; else echo "Aguardando resposta do técnico." ?> </a> <div class="collapse " id="collapse1"> <div class="bg-white mt-2 p-2"> <?php echo nl2br($result_inners->mensagem) ?> </div> <span style="color: #6c757d; float: right;"><?php echo date('d/m/Y H:i', strtotime($result_inners->data_hora)) ?></span> </div> </div> <?php } ?>  
    • By elielton
      Preciso usar um regex 
      qual expressão reconhece: 03-190325
       
       
      Alguém pode me ajudar?
       
       
    • By Guilherme Scarpatto
      <p>Escolha a categoria: <select name="categoria"> <option></option> <option value="v1">Conhecimentos gerais</option> <option value="v2">Português</option> <option value="v3">Matemática</option> <option value="v4">História</option> <option value="v5">Geografia</option> <option value="v6">Sociologia</option> <option value="v7">Tecnologia</option> <option value="v8">Biologia</option> <option value="v9">Programação</option> <option value="v10">Banco de dados</option> </select>  
×

Important Information

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