Importar registros de uma planilha excel

Jailton, bom dia.
a dica funcionou, obrigado.

Mas me deparei com outro problema. Ao recuperar a linha retorna o valor : coluna1;coluna2;coluna3;coluna4;coluna5.

Preciso separar as colunas, porque as colunas : coluna1 e coluna3 são caracteres. Portanto, preciso incluir as aspas antes do insert na tabela.

Desde já agradeço.

Arranca toda a parte do seu INSERT e ADAPTA esse meu código, olha como fica fácil fazer INSERT.

INSERT (METÓDO NOVO DO SC, Melhor para facilitar inclusão)

$insert_table  = 'TBLMOV';  // Nome da Tabela
$insert_fields = array(   
	'CODINFENTRADA'    => "[glo_codientrada]",  
	'DESCRINFENTRADA'  => "[glo_descrientrada]",
	'qtdmov'           => "[glo_qtdentrada]",
	'OBSNFENTRADA'     => "$Obs_Entrada_x",
	'datamov'          => "'{Data}'",
	'DATAEMISSAO'      => "'2016-01-06'",
	'customov'         => "[glo_vlrentrada]",
	'coditem'          => "0"
);

// Inserir registro
$insert_sql = 'INSERT INTO ' . $insert_table
    . ' (' . implode(', ', array_keys($insert_fields)) . ')'
    . ' VALUES (' . implode(', ', array_values($insert_fields)) . ')';

sc_exec_sql($insert_sql);

Jailton, bom dia.
Vou seguir a dica.

Mas como vou recuperar os valores campo a campo para atribuir no “$insert_fields”, porque o retorno do arquivo CSV é uma string “coluna1;coluna2;coluna3;coluna4;coluna5” com dados variáveis? Exemplo : “MARIA;1;10/05/2015;1212;121213”

Existe uma função substring, onde o valor da “coluna1” vai até encontrar o caracter “;” (Exemplo : coluna1 = MARIA) ? E assim por diante até recuperar o valor da última coluna.

$insert_fields = array(
‘CODINFENTRADA’ => “coluna1”,
‘DESCRINFENTRADA’ => “coluna2”,
‘qtdmov’ => “coluna3”,
‘OBSNFENTRADA’ => “coluna4”,
‘datamov’ => “‘coluna5’”
);

Desde já agradeço.

Essa parte onde você coloca os valores nas variáveis você mantem, é só na hora de gerar o INSERT que vai usar a outra parte.
$CPF_CNPJ = $campo[0];
$CD_SERVICO = $campo[1];
$DT_PESSOA_SERVICO = $campo[2];
$QT_PESSOA_SERVICO = $campo[3];
$VL_PESSOA_SERVICO = $campo[4];
$DS_OBSERVACAO = $campo[5];
$DS_CONVENIO = $campo[6];
$DT_CADASTRO = ‘01/01/2000’;
$CD_USUARIO_CADASTRO = [gloLogin];
$DT_ATUALIZACAO = ‘01/01/2000’;
$CD_USUARIO_ATUALIZACAO = [gloLogin];

Jailton,
após converter o arquivo excel para CSV.

O valor do “$campo[0]” retorna a string toda “coluna1;coluna2;coluna3;coluna4;coluna5” ( “MARIA;1;10/05/2015;1212;121213”) e não somente o valor “coluna1”, neste caso MARIA.

Por isso, questionei sobre uma função substring para quebrar o valor dos campos.

Refiz seu código agora só adaptar os nome dos campos e ver se são números ou alfanuméricos, como não tenho o CSV e nem a BASE aqui chutei alguns, ai só colocar ’ ou tirar no $insert_fields

<?php

// Exemplo de scrip para exibir os nomes obtidos no arquivo CSV de exemplo

// CÓDIGO (OnValidate) :

// Pegando o arquivo com caminho
$caminho = $this->Ini->path_doc;
$arq = $caminho.'/'.{arquivo};

$delimitador = ';';
$cerca = '';

$cadastrados=0;

// Abrir arquivo para leitura
$f = fopen($arq, 'r');
if ($f) {

    // Ler cabecalho do arquivo
    $cabecalho = fgetcsv($f, 0, $delimitador, $cerca);

    // Enquanto nao terminar o arquivo
    while (!feof($f)) {

        // Ler uma linha do arquivo
        $linha = fgetcsv($f, 0, $delimitador, $cerca);
        if (!$linha) {
            continue;
        }

        // Montar registro com valores indexados pelo cabecalho
        $registro = array_combine($cabecalho, $linha);

        // Obtendo campos do CSV
	// Olhar no Sseu CSV como estão os NOMES CABEÇALHO dos campos e colocar ['NOME_CAMPO']
        $CPF_CNPJ_x = $registro['CPF_CNPJ'];
	$CD_SERVICO_x = $registro['CD_SERVICO'];
	$DT_PESSOA_SERVICO_x = $registro['DT_PESSOA_SERVICO'];
	$QT_PESSOA_SERVICO_x = $registro['QT_PESSOA_SERVICO'];
	$VL_PESSOA_SERVICO_x = $registro['VL_PESSOA_SERVICO'];
	$DS_OBSERVACAO_x = $registro['DS_OBSERVACAO'];
	$DS_CONVENIO_x = $registro['DS_CONVENIO'];
	$DT_CADASTRO_x = $registro['DT_CADASTRO'];
	$CD_USUARIO_CADASTRO_x = $registro['CD_USUARIO_CADASTRO'];
	$DT_ATUALIZACAO_x = $registro['DT_ATUALIZACAO'];
	$CD_USUARIO_ATUALIZACAO_x = $registro['CD_USUARIO_ATUALIZACAO'];

		$insert_table  = 'TB_BI_PESSOA_SERVICO';  // Nome da Tabela
		$insert_fields = array(
			'CPF_CNPJ'               => "'$CPF_CNPJ_x'",
			'CD_SERVICO'             => "$CD_SERVICO_x",
			'DT_PESSOA_SERVICO'      => "'$DT_PESSOA_SERVICO_x'",
			'QT_PESSOA_SERVICO'      => "$QT_PESSOA_SERVICO_x",
			'VL_PESSOA_SERVICO'      => "$VL_PESSOA_SERVICO_x",
			'DS_OBSERVACAO'          => "'$DS_OBSERVACAO_x'",
			'DS_CONVENIO'            => "'$DS_CONVENIO_x'",
			'DT_CADASTRO'            => "'$DT_CADASTRO_x'",
			'CD_USUARIO_CADASTRO'    => "$CD_USUARIO_CADASTRO_x",
			'DS_CONVENIO'            => "'$DS_CONVENIO_x'",
			'DT_ATUALIZACAO'         => "'$DT_ATUALIZACAO_x'",
			'CD_USUARIO_ATUALIZACAO' => "$CD_USUARIO_ATUALIZACAO_x"
		);

		// Inserir registro
		$insert_sql = 'INSERT INTO ' . $insert_table
			. ' (' . implode(', ', array_keys($insert_fields)) . ')'
			. ' VALUES (' . implode(', ', array_values($insert_fields)) . ')';

		sc_exec_sql($insert_sql);

		$cadastrados++;

    }
    fclose($f);
}

if ($cadastrados==0) {
    sc_error_message("Não há registros a atualizar, verifique");
} else {
    sc_error_message("Lojas cadastradas: " . $cadastrados);
}


?>

http://www.melhorweb.com.br/artigo/704-Abrindo-arquivos-CSV-com-PHP.htm

Jailton, bom dia.
Agradeço por escrever o código.

Somente ontem consegui realizar os testes e surgiu a situação :

Quando seleciono o arquivo e clico no OK, começa a leitura do arquivo e não “anda”, ou seja, fica processando e trata o sistema. Tenho que iniciar o SC.

O problema deve estar na parte do While, será que não está faltando algum comando ou função?


CÓDIGO :


// Exemplo de scrip para exibir os nomes obtidos no arquivo CSV de exemplo
// CÓDIGO (OnValidate) :

// Pegando o arquivo com caminho
$caminho = $this->Ini->path_doc;
$arq = $caminho.’/’.{arquivo};
$delimitador = ‘;’;
$cerca = ‘’;

$cadastrados=0;

// Abrir arquivo para leitura
$f = fopen($arq, ‘r’);
if ($f) {
// Ler cabecalho do arquivo
$cabecalho = fgetcsv($f, 0, $delimitador, $cerca);
// Enquanto nao terminar o arquivo
while (!feof($f)) {
// Ler uma linha do arquivo
$linha = fgetcsv($f, 0, $delimitador, $cerca);
if (!$linha) {
continue;
}

    // Montar registro com valores indexados pelo cabecalho
    $registro = array_combine($cabecalho, $linha);

    // Obtendo campos do CSV
// Olhar no Sseu CSV como estão os NOMES CABEÇALHO dos campos e colocar ['NOME_CAMPO']
    $CPF_CNPJ_x = $registro['CPF_CNPJ'];
    $CD_SERVICO_x = $registro['CD_SERVICO'];
    $DT_PESSOA_SERVICO_x = $registro['DT_PESSOA_SERVICO'];
    $QT_PESSOA_SERVICO_x = $registro['QT_PESSOA_SERVICO'];
    $VL_PESSOA_SERVICO_x = $registro['VL_PESSOA_SERVICO'];
    $DS_OBSERVACAO_x = $registro['DS_OBSERVACAO'];
    $DS_CONVENIO_x = $registro['DS_CONVENIO'];
    $DT_CADASTRO_x = $registro['DT_CADASTRO'];
    $CD_USUARIO_CADASTRO_x = $registro['CD_USUARIO_CADASTRO'];
    $DT_ATUALIZACAO_x = $registro['DT_ATUALIZACAO'];
    $CD_USUARIO_ATUALIZACAO_x = $registro['CD_USUARIO_ATUALIZACAO'];

	$insert_table  = 'TB_BI_PESSOA_SERVICO';  // Nome da Tabela
	$insert_fields = array(
		'CPF_CNPJ'               => "'$CPF_CNPJ_x'",
		'CD_SERVICO'             => "$CD_SERVICO_x",
		'DT_PESSOA_SERVICO'      => "'$DT_PESSOA_SERVICO_x'",
		'QT_PESSOA_SERVICO'      => "$QT_PESSOA_SERVICO_x",
		'VL_PESSOA_SERVICO'      => "$VL_PESSOA_SERVICO_x",
		'DS_OBSERVACAO'          => "'$DS_OBSERVACAO_x'",
		'DS_CONVENIO'            => "'$DS_CONVENIO_x'",
		'DT_CADASTRO'            => "'$DT_CADASTRO_x'",
		'CD_USUARIO_CADASTRO'    => "'$CD_USUARIO_CADASTRO_x'",
		'DT_ATUALIZACAO'         => "'$DT_ATUALIZACAO_x'",
		'CD_USUARIO_ATUALIZACAO' => "'$CD_USUARIO_ATUALIZACAO_x'"
		
	);

	// Inserir registro
	$insert_sql = 'INSERT INTO ' . $insert_table
		. ' (' . implode(', ', array_keys($insert_fields)) . ')'
		. ' VALUES (' . implode(', ', array_values($insert_fields)) . ')';
	sc_exec_sql($insert_sql);

	$cadastrados++;

}
fclose($f);

}

if ($cadastrados==0) {
sc_error_message(“Não há registros a atualizar, verifique”);
} else {
sc_error_message("Pessoas Serviço cadastrados: " . $cadastrados);
}


ARQUIVO CSV


[‘CPF_CNPJ’] [‘CD_SERVICO’] [‘DT_PESSOA_SERVICO’] [‘QT_PESSOA_SERVICO’] [‘VL_PESSOA_SERVICO’] [‘DS_OBSERVACAO’] [‘DS_CONVENIO’] [‘DT_CADASTRO’] [‘CD_USUARIO_CADASTRO’] [‘DT_ATUALIZACAO’] [‘CD_USUARIO_ATUALIZACAO’]
1 1 05/04/2016 1 50 a d 01/01/2010 [gloLogin] 01/01/2010 [gloLogin]
1 2 05/04/2016 1 70 a d 01/01/2010 [gloLogin] 01/01/2010 [gloLogin]

Desde já agradeço.

Veja se os delimitador do seu cabeçalho do seu csv são esses:
$delimitador = ‘;’;
$cerca = ‘’;

Tem gente que usa: , e aspa dupla entre os campos.
$delimitador = ‘,’;
$cerca = ‘"’;

Um exemplo da função:
http://www.melhorweb.com.br/artigo/704-Abrindo-arquivos-CSV-com-PHP.htm

Essa parte: // Olhar no seu CSV como estão os NOMES CABEÇALHO dos campos e colocar [‘NOME_CAMPO’] não é pra vc fazer no CSV é pra fazer no código era só pra olhar,
o nome do cabeçalho no CSV e ajustar o código
Se tava:
NOME;ENDERECO;CIDADE ai no código do php ali naquela parte arruma de acordo com o nome do campo que tá no .csv

Pelo visto, não tem delimitador no CSV… daí tem que usar brancos mesmo do tipo ’ ’

Amigos, bom dia.
Funcionou utilizando os limitadores :
$delimitador = ‘;’;
$cerca = ‘"’;

Agradeço pela ajuda.

Boa noite pessoal, tenho tentado fazer a aplicação para importar, mas sem sucesso. Porém, acho que estou muito próximo de realizar com as postagens a este respeito… a Aplicação chega a exibir a mensagem de Ligações Cadastradas com Sucesso !! Tudo perfeito, mas na base não entra… Através do phpMyAdmin usando o mesmo CSV ela insere. Por favor, se puderem me ajudar, eu agradeço muito.

dei um ECHO $insert_sql;

// Pegando o arquivo com caminho
$caminho = $this->Ini->path_doc;
$_arquivo = $caminho.'/'.{importa_lig};

$_Delimitador = ';';
$_Cerca = '"';

$_Cadastrados=0;

// Abrir arquivo para leitura
$arq = fopen($_arquivo, 'r');
if ($arq) {

    // Ler cabecalho do arquivo
    $cabecalho = fgetcsv($arq, 0, $_Delimitador, $_Cerca);

    // Enquanto nao terminar o arquivo
    while (!feof($arq)) {

        // Ler uma linha do arquivo
        $linha = fgetcsv($arq, 0, $_Delimitador, $_Cerca);
        if (!$linha) {
            continue;
        }

        // Montar registro com valores indexados pelo cabecalho
        $registro = array_combine($cabecalho, $linha);

        // Obtendo campos do CSV
      // Olhar no Seu CSV como estão os NOMES CABEÇALHO dos campos e colocar ['NOME_CAMPO']
		$usuario_clientes = $registro['usuario_clientes'];
	 	$data_clientes = $registro['data_clientes'];
		$horario_clientes = $registro['horario_clientes'];
		$recepcao_clientes = $registro['recepcao_clientes'];
		$sexo_clientes = $registro['sexo_clientes'];
		$nome_clientes = $registro['nome_clientes'];
		$idade_clientes = $registro['idade_clientes'];
		$telefone1_clientes = $registro['telefone1_clientes'];
		$telefone2_clientes = $registro['telefone2_clientes'];
		$midia_clientes = $registro['midia_clientes'];
		$profissao_clientes = $registro['profissao_clientes'];
		$estado_civil_clientes = $registro['estado_civil_clientes'];
		$email_clientes = $registro['email_clientes'];
		$nome_conjuge_clientes = $registro['nome_conjuge_clientes'];
		$idade_conjuge_clientes = $registro['idade_conjuge_clientes'];
		$profissao_conjuge_clientes = $registro['profissao_conjuge_clientes'];
		$email_conjuge_clientes = $registro['email_conjuge_clientes'];
		$observacao_clientes = $registro['observacao_clientes'];
		$endereco_clientes = $registro['endereco_clientes'];
		$numero_clientes = $registro['numero_clientes'];
		$complemento_clientes = $registro['complemento_clientes'];
		$bairro_clientes = $registro['bairro_clientes'];
		$cep_clientes = $registro['cep_clientes'];
		$cidade_clientes = $registro['cidade_clientes'];
		$referencia_clientes = $registro['referencia_clientes'];
		$terapeuta_clientes = $registro['terapeuta_clientes'];
		$responsavel_visita_clientes = $registro['responsavel_visita_clientes'];
		$data_visita_clientes = $registro['data_visita_clientes'];
		$horario_visita_clientes = $registro['horario_visita_clientes'];
		$status_clientes = $registro['status_clientes'];
		$filial_clientes = $registro['filial_clientes'];
		$relatorio_visita = $registro['relatorio_visita'];
		$relatorio_venda = $registro['relatorio_venda'];
		$relatorio_ligacoes = $registro['relatorio_ligacoes'];
		$relatorio_agendamento = $registro['relatorio_agendamento'];
		$data_venda_clientes = $registro['data_venda_clientes'];
		$numero_nota_clientes = $registro['numero_nota_clientes'];
		$valor_total_clientes = $registro['valor_total_clientes'];
		$dia_vencimentos_clientes = $registro['dia_vencimentos_clientes'];
		$forma_de_pagamento_clientes = $registro['forma_de_pagamento_clientes'];
		$condicao_de_pagamento_clientes = $registro['condicao_de_pagamento_clientes'];
		$observacoes_financeiro_clientes = $registro['observacoes_financeiro_clientes'];
		$cargo_usuario = $registro['cargo_usuario'];
		$andamento = $registro['andamento'];
		$vendido = $registro['vendido'];
		$reagendamento = $registro['reagendamento'];
		$cancelado = $registro['cancelado'];

      $insert_table  = 'clientes2';  // Nome da Tabela
      $insert_fields = array(
		  	'usuario_clientes'				=> "'$usuario_clientes'",
			'data_clientes'					=> "'$data_clientes'",
			'horario_clientes'				=> "'$horario_clientes'",
			'recepcao_clientes'				=> "'$recepcao_clientes'",
			'sexo_clientes'					=> "'$sexo_clientes'",
			'nome_clientes'					=> "'$nome_clientes'",
			'idade_clientes'				=> "'$idade_clientes'",
			'telefone1_clientes'			=> "'$telefone1_clientes'",
			'telefone2_clientes'			=> "'$telefone2_clientes'",
			'midia_clientes'				=> "'$midia_clientes'",
			'profissao_clientes'			=> "'$profissao_clientes'",
			'estado_civil_clientes'			=> "'$estado_civil_clientes'",
			'email_clientes'				=> "'$email_clientes'",
			'nome_conjuge_clientes'			=> "'$nome_conjuge_clientes'",
			'idade_conjuge_clientes'		=> "'$idade_conjuge_clientes'",			
			'profissao_conjuge_clientes'	=> "'$profissao_conjuge_clientes'",
			'email_conjuge_clientes'		=> "'$email_clientes'",
			'observacao_clientes'			=> "'$observacao_clientes'",
			'endereco_clientes'				=> "'$endereco_clientes'",
			'numero_clientes'				=> "'$numero_clientes'",
			'complemento_clientes'			=> "'$complemento_clientes'",
			'bairro_clientes'				=> "'$bairro_clientes'",
			'cep_clientes'					=> "'$cep_clientes'",
			'cidade_clientes'				=> "'$cidade_clientes'",
			'referencia_clientes'			=> "'$referencia_clientes'",
			'terapeuta_clientes'			=> "'$terapeuta_clientes'",
			'responsavel_visita_clientes'	=> "'$responsavel_visita_clientes'",
			'data_visita_clientes'			=> "'$data_visita_clientes'",
			'horario_visita_clientes'		=> "'$horario_visita_clientes'",
			'status_clientes'				=> "'$status_clientes'",
			'filial_clientes'				=> "'$filial_clientes'",
			'relatorio_visita'				=> "'$relatorio_visita'",
			'relatorio_venda'				=> "'$relatorio_venda'",
			'relatorio_ligacoes'			=> "'$relatorio_ligacoes'",
			'relatorio_agendamento'			=> "'$relatorio_agendamento'",
			'data_venda_clientes'			=> "'$data_venda_clientes'",
			'numero_nota_clientes'			=> "'$numero_nota_clientes'",
			'valor_total_clientes'			=> "'$valor_total_clientes'",
			'dia_vencimentos_clientes'		=> "'$dia_vencimentos_clientes'",
			'forma_de_pagamento_clientes'	=> "'$forma_de_pagamento_clientes'",
			'condicao_de_pagamento_clientes'	=> "'$condicao_de_pagamento_clientes'",
			'observacoes_financeiro_clientes'	=> "'$observacoes_financeiro_clientes'",
			'cargo_usuario'					=> "'$cargo_usuario'",
			'andamento'						=> "'$andamento'",
			'vendido'						=> "'$vendido'",
			'reagendamento'					=> "'$reagendamento'",
			'cancelado'						=> "'$cancelado'",
      );

   // Inserir registro
      $insert_sql = 'INSERT INTO ' . $insert_table
         . ' (' . implode(', ', array_keys($insert_fields)) . ')'
         . ' VALUES (' . implode(', ', array_values($insert_fields)) . ')';

      sc_exec_sql($insert_sql);

      $_Cadastrados++;

    } // Fim: while (!feof($arq))
   
    fclose($arq);
}
ECHO $insert_sql;

if ($_Cadastrados==0) {
    sc_error_message("Não há registros a atualizar, verifique");
} else {
    sc_error_message("Ligações cadastradas: " . $_Cadastrados);
}

{Status}="** Concluído **";

Captura de Tela 2018-01-05 às 20.31.04.png

Coloque sc_commit_trans(); desta forma:

sc_exec_sql($insert_sql);
sc_commit_trans();
Coloque sc_commit_trans(); desta forma:

Código: [Selecionar]
sc_exec_sql($insert_sql);
sc_commit_trans();

Boa noite Kleyber, obrigado pelo apoio, mas infelizmente não houve efeito. Pior é que não dá mensagem de erro alguma… ele processa tudo, diz que inseriu, mas não entra na base…

[code] // Inserir registro
$insert_sql = ‘INSERT INTO ’ . $insert_table
. ’ (’ . implode(’, ‘, array_keys($insert_fields)) . ‘)’
. ’ VALUES (’ . implode(’, ', array_values($insert_fields)) . ‘)’;

  	sc_exec_sql($insert_sql);
	sc_commit_trans();

  $_Cadastrados++;

} // Fim: while (!feof($arq))

[/code]

Há uma coisa estranha que acontece que pode ser algum problema no CSV. Quando importo diretamente pelo PHPMYADMIN, ele insere também o cabeçalho, como se fossem dados. Os delimitadores usados estão corretos, veja em texto o arquivo CSV:

id_clientes;usuario_clientes;data_clientes;horario_clientes;recepcao_clientes;sexo_clientes;nome_clientes;idade_clientes;telefone1_clientes;telefone2_clientes;midia_clientes;profissao_clientes;estado_civil_clientes;email_clientes;nome_conjuge_clientes;idade_conjuge_clientes;profissao_conjuge_clientes;email_conjuge_clientes;observacao_clientes;endereco_clientes;numero_clientes;complemento_clientes;bairro_clientes;cep_clientes;cidade_clientes;referencia_clientes;terapeuta_clientes;responsavel_visita_clientes;data_visita_clientes;horario_visita_clientes;status_clientes;filial_clientes;relatorio_visita;relatorio_venda;relatorio_ligacoes;relatorio_agendamento;data_venda_clientes;numero_nota_clientes;valor_total_clientes;dia_vencimentos_clientes;forma_de_pagamento_clientes;condicao_de_pagamento_clientes;observacoes_financeiro_clientes;cargo_usuario;andamento;vendido;reagendamento;cancelado ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;20001223423;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(48) 99632-2134;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(11) 4648-1263;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(11) 2961-6098;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(71) 3452-0057;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(21) 97524-8471;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(71) 99156-8638;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(85) 98724-6472;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(21) 3038-1016;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(21) 3686-2205;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(31) 3482-0959;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(31) 3225-8087;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(47) 99157-7575;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(11) 5661-8797;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(11) 2057-5227;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(21) 99581-1260;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(24) 2248-1344;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(11) 97543-7288;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(11) 95312-0720;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(11) 4399-1112;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Keila;;importadp;;(11) 95177-8891;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(11) 3854-0149;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(11) 98717-9350;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(11) 98318-5768;;;;;;;;;;;;;;;;; ;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(11) 2951-4476;;;;;;;;;;;;;;;;; ;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;;

Deste uma olhada neste tópico aqui: http://www.scriptcase.com.br/forum/index.php/topic,8355.msg40797.html#msg40797 ? Talvez ajude.

Vergonhoso, mas preciso dizer, preciso ser honesto com todos do fórum e principalmente com o Kleyber que me ajudou…
Depois de horas e horas quebrando a cabeça, percebi o meu erro… Eu testava em localhost, recebia a mensagem de Ligações Inseridas, mas eu olhava a base no servidor, por isso não via os dados inseridos. Mil desculpas…

Kleyber, com base no seu código, está funcionando 100%, desculpas pela minha falta de atenção. As vezes está na nossa frente e não vemos o óbvio.

mais uma vez, obrigado e desculpas !!

kkkkk não te preocupes, isso acontece com todos, principalmente quando estamos pressionados pelo fato de ainda não termos descoberto o erro no sistema… O importante é que conseguiste resolver e ficou a dica para as próximas oportunidades. Vamos em frente!!

Kleyber, ainda dentro deste tema, gostaria de fazer o seguinte:

Antes de Importar, analisar se os telefones que constam no Arquivo CSV já estão no banco de dados.

Para isso, criei uma nova aplicação Controle e a chamei de Analisar Arquivo. O objetivo é que ele Leia o CSV em busca de duplicidade, então fiz um lookup. Fiz separado, pois a idéia, é que ele me mostre uma lista de duplicados, antes de importar. Com esta lista de duplicados, vou conseguir, manualmente, limpar o ARQUIVO CSV e só então importa-lo de vez.

Imagino que isso seja possível dentro da mesma Controle de Importação, mas acho que seria muito mais complexo. Veja o que fiz apenas para analisar as duplicidades:

[code]// Pegando o arquivo com caminho
$caminho = $this->Ini->path_doc;
$_arquivo = $caminho.’/’.{importa_lig};

$_Delimitador = ‘;’;
$_Cerca = ‘"’;

$_Duplicados=0;

// Abrir arquivo para leitura
$arq = fopen($_arquivo, ‘r’);
if ($arq) {

// Ler cabecalho do arquivo
$cabecalho = fgetcsv($arq, 0, $_Delimitador, $_Cerca);

// Enquanto nao terminar o arquivo
while (!feof($arq)) {

    // Ler uma linha do arquivo
    $linha = fgetcsv($arq, 0, $_Delimitador, $_Cerca);
    if (!$linha) {
        continue;
    }

    // Montar registro com valores indexados pelo cabecalho
    $registro = array_combine($cabecalho, $linha);

    // Obtendo campos do CSV
  // Olhar no Seu CSV como estão os NOMES CABEÇALHO dos campos e colocar ['NOME_CAMPO']
	$usuario_clientes = $registro['usuario_clientes'];
 	$data_clientes = $registro['data_clientes'];
	$horario_clientes = $registro['horario_clientes'];
	$recepcao_clientes = $registro['recepcao_clientes'];
	$sexo_clientes = $registro['sexo_clientes'];
	$nome_clientes = $registro['nome_clientes'];
	$idade_clientes = $registro['idade_clientes'];
	$telefone1_clientes = $registro['telefone1_clientes'];
	$telefone2_clientes = $registro['telefone2_clientes'];
	$midia_clientes = $registro['midia_clientes'];
	$profissao_clientes = $registro['profissao_clientes'];
	$estado_civil_clientes = $registro['estado_civil_clientes'];
	$email_clientes = $registro['email_clientes'];
	$nome_conjuge_clientes = $registro['nome_conjuge_clientes'];
	$idade_conjuge_clientes = $registro['idade_conjuge_clientes'];
	$profissao_conjuge_clientes = $registro['profissao_conjuge_clientes'];
	$email_conjuge_clientes = $registro['email_conjuge_clientes'];
	$observacao_clientes = $registro['observacao_clientes'];
	$endereco_clientes = $registro['endereco_clientes'];
	$numero_clientes = $registro['numero_clientes'];
	$complemento_clientes = $registro['complemento_clientes'];
	$bairro_clientes = $registro['bairro_clientes'];
	$cep_clientes = $registro['cep_clientes'];
	$cidade_clientes = $registro['cidade_clientes'];
	$referencia_clientes = $registro['referencia_clientes'];
	$terapeuta_clientes = $registro['terapeuta_clientes'];
	$responsavel_visita_clientes = $registro['responsavel_visita_clientes'];
	$data_visita_clientes = $registro['data_visita_clientes'];
	$horario_visita_clientes = $registro['horario_visita_clientes'];
	$status_clientes = $registro['status_clientes'];
	$filial_clientes = $registro['filial_clientes'];
	$relatorio_visita = $registro['relatorio_visita'];
	$relatorio_venda = $registro['relatorio_venda'];
	$relatorio_ligacoes = $registro['relatorio_ligacoes'];
	$relatorio_agendamento = $registro['relatorio_agendamento'];
	$data_venda_clientes = $registro['data_venda_clientes'];
	$numero_nota_clientes = $registro['numero_nota_clientes'];
	$valor_total_clientes = $registro['valor_total_clientes'];
	$dia_vencimentos_clientes = $registro['dia_vencimentos_clientes'];
	$forma_de_pagamento_clientes = $registro['forma_de_pagamento_clientes'];
	$condicao_de_pagamento_clientes = $registro['condicao_de_pagamento_clientes'];
	$observacoes_financeiro_clientes = $registro['observacoes_financeiro_clientes'];
	$cargo_usuario = $registro['cargo_usuario'];
	$andamento = $registro['andamento'];
	$vendido = $registro['vendido'];
	$reagendamento = $registro['reagendamento'];
	$cancelado = $registro['cancelado'];

  $insert_table  = 'clientes';  // Nome da Tabela
  $insert_fields = array(
	  	'usuario_clientes'				=> "'$usuario_clientes'",
		'data_clientes'					=> "'$data_clientes'",
		'horario_clientes'				=> "'$horario_clientes'",
		'recepcao_clientes'				=> "'$recepcao_clientes'",
		'sexo_clientes'					=> "'$sexo_clientes'",
		'nome_clientes'					=> "'$nome_clientes'",
		'idade_clientes'				=> "'$idade_clientes'",
		'telefone1_clientes'			=> "'$telefone1_clientes'",
		'telefone2_clientes'			=> "'$telefone2_clientes'",
		'midia_clientes'				=> "'$midia_clientes'",
		'profissao_clientes'			=> "'$profissao_clientes'",
		'estado_civil_clientes'			=> "'$estado_civil_clientes'",
		'email_clientes'				=> "'$email_clientes'",
		'nome_conjuge_clientes'			=> "'$nome_conjuge_clientes'",
		'idade_conjuge_clientes'		=> "'$idade_conjuge_clientes'",			
		'profissao_conjuge_clientes'	=> "'$profissao_conjuge_clientes'",
		'email_conjuge_clientes'		=> "'$email_clientes'",
		'observacao_clientes'			=> "'$observacao_clientes'",
		'endereco_clientes'				=> "'$endereco_clientes'",
		'numero_clientes'				=> "'$numero_clientes'",
		'complemento_clientes'			=> "'$complemento_clientes'",
		'bairro_clientes'				=> "'$bairro_clientes'",
		'cep_clientes'					=> "'$cep_clientes'",
		'cidade_clientes'				=> "'$cidade_clientes'",
		'referencia_clientes'			=> "'$referencia_clientes'",
		'terapeuta_clientes'			=> "'$terapeuta_clientes'",
		'responsavel_visita_clientes'	=> "'$responsavel_visita_clientes'",
		'data_visita_clientes'			=> "'$data_visita_clientes'",
		'horario_visita_clientes'		=> "'$horario_visita_clientes'",
		'status_clientes'				=> "'$status_clientes'",
		'filial_clientes'				=> "'$filial_clientes'",
		'relatorio_visita'				=> "'$relatorio_visita'",
		'relatorio_venda'				=> "'$relatorio_venda'",
		'relatorio_ligacoes'			=> "'$relatorio_ligacoes'",
		'relatorio_agendamento'			=> "'$relatorio_agendamento'",
		'data_venda_clientes'			=> "'$data_venda_clientes'",
		'numero_nota_clientes'			=> "'$numero_nota_clientes'",
		'valor_total_clientes'			=> "'$valor_total_clientes'",
		'dia_vencimentos_clientes'		=> "'$dia_vencimentos_clientes'",
		'forma_de_pagamento_clientes'	=> "'$forma_de_pagamento_clientes'",
		'condicao_de_pagamento_clientes'	=> "'$condicao_de_pagamento_clientes'",
		'observacoes_financeiro_clientes'	=> "'$observacoes_financeiro_clientes'",
		'cargo_usuario'					=> "'$cargo_usuario'",
		'andamento'						=> "'$andamento'",
		'vendido'						=> "'$vendido'",
		'reagendamento'					=> "'$reagendamento'",
		'cancelado'						=> "'$cancelado'",
  );

	$sql = "SELECT telefone1_clientes FROM clientes WHERE telefone1_clientes = $telefone1_clientes";
		sc_lookup( ds, $sql);
		if(empty({ds})) {}
		else{
		$id_cli = {ds[0][0]};
		echo $id_cli;
			
		$_Duplicados++;
	}
	
/*
 Inserir registro
  $insert_sql = 'INSERT INTO ' . $insert_table
     . ' (' . implode(', ', array_keys($insert_fields)) . ')'
     . ' VALUES (' . implode(', ', array_values($insert_fields)) . ')';

  	sc_exec_sql($insert_sql);
	sc_commit_trans();

  $_Cadastrados++;
*/

} // Fim: while (!feof($arq))

fclose($arq);

}

if ($_Duplicados==0) {
sc_error_message(“Não há registros Duplicados nesta lista”);
}
else{
{Status}="DUPLICIDADE ENCONTRADA : " . $_Duplicados;
}

[/code]

Ele diz que não há registros duplicados, mas todos da lista são duplicados… onde posso estar errando ?

obrigado !!

Teria que fazer o SELECT pra checar a duplicidade antes de dar o INSERT.

A leitura da planilha pode ser antes jogada em array e a cada insert de dados no array verificar antes se o índice é existente e se for criar um contador no próprio array marcando quantos registros existem para o mesmo índice (ou seja registros duplicados).

Haroldo poderia me dar um exemplo deste que comentou?