Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda com Script de importaçãor N-M


rayfcrols

Pergunta

Pessoal gostaria de uma ajuda para desenvolver um script de importação de um txt/csv.

Eis a estrutura do mesmo:

cod_emp;cp_nome;cpf;cp_nome_cargo;cp_nome_eve;cod_event;sq_cargo;competencia
11606;ADAUTO OLIVEIRA DA SILVA;60645482501;TECNICO DE NIVEL SUPERIOR;PRODUTIVIDADE Cooperado - Coof;268;TECNICO DE NIVEL SUPERIOR;01/03/2017
11606;ADAUTO OLIVEIRA DA SILVA;60645482502;TECNICO DE NIVEL SUPERIOR;ADIC. ATIVIDADES INSALUBRES 20%;283;TECNICO DE NIVEL SUPERIOR;01/03/2017
11606;ADAUTO OLIVEIRA DA SILVA;60645482502;TECNICO DE NIVEL SUPERIOR;TAXA COOPERATIVA - Coof;265;TECNICO DE NIVEL SUPERIOR;01/03/2017
11606;ADAUTO OLIVEIRA DA SILVA;60645482502;TECNICO DE NIVEL SUPERIOR;INSS - Previdencia Social;858;TECNICO DE NIVEL SUPERIOR;01/03/2017
7786;ADELE GABRIELA MELO LIMA;04140055585;ENFERMEIRO(A);PRODUTIVIDADE Cooperado - Coof;268;ENFERMEIRO(A);01/03/2017
7786;ADELE GABRIELA MELO LIMA;04140055585;ENFERMEIRO(A);ADIC. ATIVIDADES INSALUBRES 20%;283;ENFERMEIRO(A);01/03/2017
7786;ADELE GABRIELA MELO LIMA;04140055585;ENFERMEIRO(A);TAXA COOPERATIVA - Coof;265;ENFERMEIRO(A);01/03/2017
7786;ADELE GABRIELA MELO LIMA;04140055585;ENFERMEIRO(A);INSS - Previdencia Social;858;ENFERMEIRO(A);01/03/2017
7786;ADELE GABRIELA MELO LIMA;04140055585;ENFERMEIRO(A);IRRF - Imposto de Renda;857;ENFERMEIRO(A);01/03/2017
10426;ADELMO DE OLIVEIRA LEITE;07985002578;MEDICO(A);PRODUTIVIDADE Cooperado - Coof;268;MEDICO(A);01/03/2017
10426;ADELMO DE OLIVEIRA LEITE;07985002578;MEDICO(A);ADIC. ATIVIDADES INSALUBRES 20%;283;MEDICO(A);01/03/2017
10426;ADELMO DE OLIVEIRA LEITE;07985002578;MEDICO(A);TAXA COOPERATIVA - Coof;265;MEDICO(A);01/03/2017
10426;ADELMO DE OLIVEIRA LEITE;07985002578;MEDICO(A);INSS - Previdencia Social;858;MEDICO(A);01/03/2017
10426;ADELMO DE OLIVEIRA LEITE;07985002578;MEDICO(A);IRRF - Imposto de Renda;857;MEDICO(A);01/03/2017
8236;ADELMO DE OLIVEIRA LEITE FILHO;07805790612;FARMACEUTICO(A);PRODUTIVIDADE Cooperado - Coof;268;FARMACEUTICO(A);01/03/2017
8236;ADELMO DE OLIVEIRA LEITE FILHO;07805790612;FARMACEUTICO(A);ADIC. ATIVIDADES INSALUBRES 20%;283;FARMACEUTICO(A);01/03/2017
8236;ADELMO DE OLIVEIRA LEITE FILHO;07805790612;FARMACEUTICO(A);TAXA COOPERATIVA - Coof;265;FARMACEUTICO(A);01/03/2017
8236;ADELMO DE OLIVEIRA LEITE FILHO;07805790612;FARMACEUTICO(A);INSS - Previdencia Social;858;FARMACEUTICO(A);01/03/2017

Nota-se que é uma linha para cada evento relacionado a um profissional, ou seja os dados cod_emp;cp_nome;cpf;cp_nome_cargo;sq_cargo;competencia, são gravados na principal e cp_nome_eve;cod_event são gravados na filho.

 

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Bom, vou partir do pressuposto que você tem a tabela "pessoa" e que tem a tabela "evento" e terá a tabela "pessoa_evento" para vincular as duas. Daí você lê o CSV, quebra as linhas e colunas. Não vou entrar nesse mérito porque vou assumir que essa parte você já tem pronto.

Daí, você faz:

foreach($linhas as $l) {
	$pessoa = $conn->query("SELECT * FROM pessoa WHERE cod_emp = ".$l['cod_emp']);
	if($pessoa->num_rows == 0){
		$conn->query("INSERT INTO pessoa (cod_emp, cp_nome, cpf, cp_nome_cargo) VALUES (".$l['cod_emp'].", '".$l['cp_nome']."', '".$l['cpf']."', '".$l['cp_nome_cargo']."');
	}
	$evento = $conn->query("SELECT * FROM evento WHERE cod_event = ".$l['cod_event']);
	if($evento->num_rows == 0){
		$conn->query("INSERT INTO evento (cod_event, cp_nome_eve, sq_cargo) VALUES (".$l['cod_event'].", '".$l['cp_nome_eve']."', '".$l['sq_cargo']."')");
	}
	$conn->query("INSERT INTO pessoa_evento (cod_emp, cod_event, competencia) VALUES (".$l['cod_emp'].", ".$l['cod_event'].", '".$l['competencia']."')");
}

Eu não testei o código, fui fazendo agora, mas a lógica é mais ou menos essa. A cada loop ele verifica se já existe a pessoa no banco, se não existir, insere. O mesmo com o evento. Daí ele vincula os dois na terceira tabela.

Link para o comentário
Compartilhar em outros sites

  • 0

Certo.  

quanto a abrir, ler, fechar o arquivo e entendo o que não to conseguindo é montar o script. 

Vou tentar descriminar melhor minha necessidade.

Apos abrir o arquivo verificar quantos lançamentos tem para cada profissional 1,2,3,4,5,6... e separar em uma array independente ou multidimensional e depois trabalhar em cima dela. 

eis um esboço:

$flag = true;
$last_mov = " ";
$n_lan = 0;
while (($dados = fgetcsv($objeto, 0,";")) !== FALSE)
{	
	
	if($flag) { $flag = false; continue; }
		if ($last_mov != $dados[1]){
			$n_lan = 0;
		}
		$n_lan++;	
		$last_mov = $dados[1];
		//echo $last_mov ." - ";
		//echo $n_lan. "</br>";
}

 

 

Editado por rayfcrols
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...