Ir para conteúdo
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para entender melhor, você quer que o usuário faça o upload do arquivo .xls no seu site e automaticamente cadastre os dados contidos no arquivo para o banco de dados?

Compartilhar este post


Link para o post
Compartilhar em outros 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!

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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?

Compartilhar este post


Link para o post
Compartilhar em outros 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;

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Fernanda Ribeiro
      Boa tarde,
       
      Sou iniciante e tenho uma questão que não consegui resolver até o momento.
       
      Em uma tabela tenho:
      SELECT [FK_int_Recurso] ,[dtt_Referencia] ,[dtt_Descanso_Ini] ,[dtt_Descanso_Fim] ,[int_Descanso_Dif_Mnto] ,[vch_Descanso_Dif_Hora] FROM [dbDWCSC].[dbo].[tbHExt_InterIntraJornada]  
      Onde [FK_int_Recurso] é o código do Colaborador, [dtt_Referencia] é a data em que foi realizada a batida de ponto, [dtt_Descanso_Ini] = batida de ponto inicial e [dtt_Descanso_Fim] = batida de ponto final.
       
      Preciso saber qual recurso bateu ponto por 7 dias consecutivos (uteis ou não), ou mais.
       
      Agradeço a atenção
    • Por Bruno123
      Olá, estou com uma dúvida na hora  de retornar se o número é primo ou não, poderiam me ajudar por gentileza ? Obrigado !
      <!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta charset="utf-8"> <title></title> </head> <body> <script src="javascript.js"></script> </body> </html> 'use strict' let num = prompt("Insira um número:"); let c = 0; for (i = 1; i <= num; i++) { if (num % i == 0) { c++; } } if (c == 2) { alert ("É PRIMO") } else { alert("NÃO É PRIMO") }  
    • Por ErikaLiy
      Estou começando agora com html e estou criando um site. Gostaria de saber se é possível reutilizar o código html em outras paginas. Por exemplo, todas as páginas do site terão o mesmo menu. Como faço para não precisar ficar colocando o mesmo código em todas as páginas? E caso também eu precise alterar algo, por exemplo incluir ou excluir um botão, eu consiga alterar apenas uma vez e não tenha que fazer isso de página por página.
    • Por BTK
      Boa noite, estou tentando criar um curl que faz cadastro no site(o proprietário está ciente disso) porem ele está me retornando (HTTP/1.1 100 Continue HTTP/1.1 302 Moved Temporarily)

       $ch = curl_init();   
          
                                                                                                                     
          curl_setopt($ch, CURLOPT_URL, "https://www.cafefacil.com.br/customer/account/create/");                                     
          curl_setopt($ch, CURLOPT_HEADER, true);                                                                                                   
          curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36');                                                                                                                                               
          curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);                                                                                         
          curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);                                                                                       
          curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);                                                                                       
          curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
          curl_setopt($ch, CURLOPT_COOKIESESSION, true);                                                                             
          curl_setopt($ch, CURLOPT_COOKIEJAR, getcwd().'/cafefacil.txt');
          curl_setopt($ch, CURLOPT_COOKIEFILE, getcwd().'/cafefacil.txt'); 
          
          
          
          
          $b1 = curl_exec($ch);
          
          $form_key = value($b1, 'type="hidden" name="form_key" value="', '"');
          
          curl_setopt($ch, CURLOPT_URL, 'https://www.cafefacil.com.br/customer/account/createpost/');                                     
          curl_setopt($ch, CURLOPT_HEADER, true);                                                                                                   
          curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36');                                                                                                                                                  
          curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);                                                                                         
          curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);                                                                                    
          curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);                                                                                       
          curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
          curl_setopt($ch, CURLOPT_COOKIESESSION, true);   
          curl_setopt($ch, CURLOPT_REFERER, 'https://www.cafefacil.com.br/customer/account/create/');                                                                           
          curl_setopt($ch, CURLOPT_COOKIEJAR, getcwd().'/cafefacil.txt');
          curl_setopt($ch, CURLOPT_COOKIEFILE, getcwd().'/cafefacil.txt'); 
          curl_setopt($ch, CURLOPT_POST, 1);                                                                                                    
          $boundary = '---------------------------WebKitFormBoundaryRQ3KHJbpfmPf11v6';
          
          $data = '-----------------------------'.$boundary.'
          Content-Disposition: form-data; name="success_url"
          
          
          -----------------------------'.$boundary.'
          Content-Disposition: form-data; name="error_url"
          
          
          -----------------------------'.$boundary.'
          Content-Disposition: form-data; name="form_key"
          
          '.$form_key.'
          -----------------------------'.$boundary.'
          Content-Disposition: form-data; name="tipopessoa"
          
          15
          -----------------------------'.$boundary.'
          Content-Disposition: form-data; name="firstname"
          
          NomeTest SobreNomeTest
          -----------------------------'.$boundary.'
          Content-Disposition: form-data; name="nomefantasia"
          
          
          -----------------------------'.$boundary.'
          Content-Disposition: form-data; name="inscricaoestadual"
          
          
          -----------------------------'.$boundary.'
          Content-Disposition: form-data; name="email"
          
          nometestsobrenometest@gmail.com
          -----------------------------'.$boundary.'
          Content-Disposition: form-data; name="day"
          
          01
          -----------------------------'.$boundary.'
          Content-Disposition: form-data; name="month"
          
          01
          -----------------------------'.$boundary.'
          Content-Disposition: form-data; name="year"
          
          1990
          -----------------------------'.$boundary.'
          Content-Disposition: form-data; name="dob"
          
          01/01/1990
          -----------------------------'.$boundary.'
          Content-Disposition: form-data; name="taxvat"
          
          199.758.750-50
          -----------------------------'.$boundary.'
          Content-Disposition: form-data; name="celular"
          
          (11)4712-8491
          -----------------------------'.$boundary.'
          Content-Disposition: form-data; name="password"
          
          senhatest
          -----------------------------'.$boundary.'
          Content-Disposition: form-data; name="confirmation"
          
          senhatest
          -----------------------------'.$boundary.'
          Content-Disposition: form-data; name="persistent_remember_me"
          
          on
          -----------------------------'.$boundary.'--';
          
          $header[] = "Content-Type: multipart/form-data; boundary=".$boundary;
          curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
          curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
          
            
          echo $exec = curl_exec($ch);
          curl_close($ch);
    • Por guma.cojogra@gmail.com
      Alguém poderia me ajudar a criar um mapa mental usando css e html?
      procurei na internet mas não consegui entender e não achei nenhum tutorial ou explicação que pudesse utilizar
      quais as propriedades css que devo utilizar para criar as linhas ligando um nó a outro?
       
       
      vou postar uma imagem de exemplo de como deve ficar.

      obrigado
×

Informação importante

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