Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
Sim, exatamente isso.
https://www.w3schools.com/php/php_file_upload.asp
Esse link deve te ajudar.
Desculpa mas não ajudou, eu consigo fazer upload de um arquivo comum, o que eu preciso é cadastrar os dados contidos no arquivo no meu banco de dados
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!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.
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.
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?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;
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?