Help monstro - Como pegar coluna de arq csv e validar se a mesma está correta com php

84 views
Skip to first unread message

Diego Rodrigues Pereira Teles

unread,
Oct 21, 2019, 3:35:47 PM10/21/19
to php-my...@googlegroups.com, phpri...@googlegroups.com, php-espe...@yahoogrupos.com.br, php...@yahoogroups.com, php...@yahoogrupos.com.br, ph...@googlegroups.com, php...@googlegroups.com
Boa tarde!

Jedi;

Preciso de um help mega blaster, hoje tenho uma importação funcionando redondo, exceto por um motivo, a empresa terceira mexe na ordenação 
das colunas desse arquivo csv de importação, e sem avisar, acrescentam e retiram colunas... é um inferno na terra...

Meu código é bem simples, ele lê o arquivo csv com php e importa para uma tabela, o que gostaria de fazer e de forma mais inteligente era ele 
entender o nome de cada coluna e importar e salvar na tabela as colunas corretas. Obs.: A única coisa que não muda nesse csv é o nome das colunas, mas elas podem vir e vem em ordens diferentes. 

Segue meu script:

if(isset($_POST["submit"]))
{
if($_FILES['file']['name'])
{
 $filename = explode(".", $_FILES['file']['name']);
 if($filename[1] == 'csv')
 {
/* $codigoUnidade = $_POST["codigoUnid"];
$connect = mysqli_connect("localhost", "xxxxxxxxx", "xxxxxxxxxxxxx", "xxxxxxxxxxxxxxx");  
mysqli_set_charset($connect, 'utf8');

       $query ="SELECT empresa.CNAE AS cnae FROM unid_posto INNER JOIN empresa ON empresa.ID=unid_posto.ID_EMP WHERE unid_posto.ID='$codigoUnidade' LIMIT 1";  
mysqli_set_charset($connect, 'utf8');
       $result = mysqli_query($connect, $query);  
 
           while($row = mysqli_fetch_array($result))  
  {
  $cnae = $row["cnae"];
  }
  */
   
   $handle = fopen($_FILES['file']['tmp_name'], "r");
   while(($data = fgetcsv($handle, 1000, ";")) !== FALSE )
   {
    mysqli_set_charset($conn, 'utf8');


$DT_REG = date('Y-m-d H:i:s');
$STS = "1";

$ID_ROTA = mysqli_real_escape_string($conn, $data[0]);
$ROTEIRIZACAO = mysqli_real_escape_string($conn, $data[1]);
$ROTA = mysqli_real_escape_string($conn, $data[2]);
$STS_ROTA = mysqli_real_escape_string($conn, $data[3]);
$TIPO_CONCLU = mysqli_real_escape_string($conn, $data[4]);
$COD_CONCLU = mysqli_real_escape_string($conn, $data[5]);
$DESC_CONCLU = mysqli_real_escape_string($conn, $data[6]);

$DT_ROTA = mysqli_real_escape_string($conn, $data[7]);
$dtr = explode("/", $DT_ROTA);
@$d = $dtr[0];
@$m = $dtr[1];
@$Y = $dtr[2];
$DT_ROTA2 = ''.$Y.'-'.$m.'-'.$d.'';

$HR_ROTA = mysqli_real_escape_string($conn, $data[8]);
$ID_SERVICO = mysqli_real_escape_string($conn, $data[9]);
$SERVICO = mysqli_real_escape_string($conn, $data[10]);
$STS_SERVICO = mysqli_real_escape_string($conn, $data[11]);
$COD_CLIENTE = mysqli_real_escape_string($conn, $data[12]);
$NM_CLIENTE = mysqli_real_escape_string($conn, $data[13]);
$NF = mysqli_real_escape_string($conn, $data[14]);
$NP = mysqli_real_escape_string($conn, $data[15]);
$OBS = mysqli_real_escape_string($conn, $data[16]);
$REG = mysqli_real_escape_string($conn, $data[17]);

$DT_REGISTRO = mysqli_real_escape_string($conn, $data[18]);
$dtrr = explode("/", $DT_REGISTRO);
@$dr = $dtrr[0];
@$mr = $dtrr[1];
@$Yr = $dtrr[2];
$DT_REGISTRO2 = ''.$Yr.'-'.$mr.'-'.$dr.'';

$HR_REGISTRO = mysqli_real_escape_string($conn, $data[19]);
$COD_OCORR = mysqli_real_escape_string($conn, $data[20]);
$TIPO_OCORR = mysqli_real_escape_string($conn, $data[21]);
$DESC_OCORR = mysqli_real_escape_string($conn, $data[22]);
$COMENT_OPER = mysqli_real_escape_string($conn, $data[23]);
$ASSINATURAS = mysqli_real_escape_string($conn, $data[24]);
$FOTOS = mysqli_real_escape_string($conn, $data[25]);
$DOC_IDENT_CLI = mysqli_real_escape_string($conn, $data[26]);



if (($COD_OCORR=="100") OR
($COD_OCORR=="999") OR
($COD_OCORR=="101") OR
($COD_OCORR=="996") OR
($COD_OCORR=="997") OR
($COD_OCORR=="998") OR
($COD_OCORR=="016") OR
($COD_OCORR=="112") OR
($COD_OCORR=="113") OR
($COD_OCORR=="114") OR
($COD_OCORR=="115") OR
($COD_OCORR=="116") OR
($COD_OCORR=="117") OR
($COD_OCORR=="118") OR
($COD_OCORR=="119") OR
($COD_OCORR=="120") OR
($COD_OCORR=="122"))
{
             mysqli_set_charset($conn, 'utf8');
$insert = mysqli_query($conn,"INSERT INTO validacao_excel (DT_REG,STS,LOTE_BAIXA,ID_ROTA,ROTEIRIZACAO,ROTA,STS_ROTA,TIPO_CONCLU,COD_CONCLU,DESC_CONCLU,DT_ROTA,HR_ROTA,ID_SERVICO,SERVICO,STS_SERVICO,
COD_CLIENTE,NM_CLIENTE,NF,NP,OBS,REG,DT_REGISTRO,HR_REGISTRO,COD_OCORR,TIPO_OCORR,DESC_OCORR,COMENT_OPER,ASSINATURAS,FOTOS,DOC_IDENT_CLI) VALUES
('$DT_REG', '$STS', '$LOTE_BAIXA', '$ID_ROTA', '$ROTEIRIZACAO', '$ROTA', '$STS_ROTA', '$TIPO_CONCLU', '$COD_CONCLU', '$DESC_CONCLU', '$DT_ROTA2', '$HR_ROTA',
'$ID_SERVICO', '$SERVICO', '$STS_SERVICO', '$COD_CLIENTE', '$NM_CLIENTE', '$NF', '$NP', '$OBS', '$REG', '$DT_REGISTRO2', '$HR_REGISTRO', '$COD_OCORR', '$TIPO_OCORR', '$DESC_OCORR', '$COMENT_OPER',
'$ASSINATURAS', '$FOTOS', '$DOC_IDENT_CLI')") or die (mysqli_error($conn));
}


// echo '<pre>';
// print_r($data);
// echo '</pre>';
   }
   
   fclose($handle); 


Diego Teles
Cel.: (21) 990891001

 

Paulo Vianna

unread,
Nov 30, 2019, 11:15:53 PM11/30/19
to ph...@googlegroups.com

--
Você recebeu esta mensagem porque está inscrito no grupo "PHP MG" no grupos do Google.
Site oficial do grupo: http://www.phpmg.com
Para postar neste grupo, envie um e-mail para ph...@googlegroups.com
Para cancelar a sua inscrição neste grupo, envie um e-mail para phpmg-un...@googlegroups.com
Regras da lista: http://groups.google.com/group/phpmg/web/regras-da-lista
Para ver mais opções, acesse http://groups.google.com/group/phpmg
---
Você recebeu essa mensagem porque está inscrito no grupo "PHP MG" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para phpmg+un...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/phpmg/CAB7fMqY%2B_f55DeVhqV1ao684vCC2PYkQhvLmPOzGAEZoHBcGuQ%40mail.gmail.com.
Reply all
Reply to author
Forward
0 new messages