I have a database with these two tables:
TABELA CONTRATO
id
contrato
pessoa_id
TABELA TITULO
id
titulo
valor
vencimento
contrato_id
I need to import the contrato
column, retrieve the ID
of the inserted contract, and then import the columns título
, valor
and vencimento
, which will be related to the contract.
Code:
public function upload_file()
{
$csv_mimes = array('application/vnd.ms-excel','text/plain','text/csv','text/tsv');
if(!empty($_FILES['file']['name']) && in_array($_FILES['file']['type'],$csv_mimes))
{
if(is_uploaded_file($_FILES['file']['tmp_name']))
{
// abrir arquivo csv no modo somente leitura
$csv_file = fopen($_FILES['file']['tmp_name'], 'r');
// pula a primeira linha
// se o seu arquivo csv não tiver título, apenas comente a próxima linha
fgetcsv($csv_file);
// analisa dados do arquivo csv linha por linha
// separado por virgula
// while(($line = fgetcsv($csv_file)) !== FALSE){
// separado por ponto e virgula
while(($line = fgetcsv($csv_file,null,';')) !== FALSE)
{
//print_r($line);
// verifique se a pessoa já existe no banco de dados com o mesmo cpf_cnpj
$result = $this->db->get_where("pessoa", array("cpf_cnpj"=>$line[0]))->result();
if(count($result) > 0)
{
foreach ($result as $r)
{
$pessoa_id = $r->id;
$cpf_cnpj = $line[0];
$update = [
'cpf_cnpj' => $line[0],
'nome' => $line[1],
];
$this->db->update('pessoa', $update, array('cpf_cnpj' => $line[0]));
$update_phone = [
'telefone' => $line[3]
];
$update_email = [
'email' => $line[2]
];
$this->db->update('telefone', $update_phone, array('pessoa_id' => $pessoa_id));
$this->db->update('email', $update_email, array('pessoa_id' => $pessoa_id));
}
}
else
{
// pessoa -> desenvolvido
$pessoa = [
'cpf_cnpj' => $line[0],
'nome' => $line[1]
];
$this->db->insert('pessoa', $pessoa);
$pessoa_id = $this->db->insert_id();
// pessoa -> desenvolvido
$email = [
'email' => $line[2],
'pessoa_id' => $pessoa_id
];
$this->db->insert('email', $email);
// pessoa -> desenvolvido
$telefone = [
'telefone' => $line[3],
'pessoa_id' => $pessoa_id
];
$this->db->insert('telefone', $telefone);
// contrato -> em desenvolvimento
$contrato = [
'contrato' => $line[4],
'pessoa_id' => $pessoa_id
];
$this->db->insert('contrato', $contrato);
$contrato_id = $this->db->insert_id();
// titulo -> em desenvolvimento
$titulo = [
'titulo' => $line[5],
'valor' => $line[6],
'vencimento' => $line[7],
'contrato_id' => $contrato_id
];
$this->db->insert('titulo', $titulo);
}
}
// feche o arquivo csv aberto
fclose($csv_file);
$qstring["status"] = 'Sucesso';
}
else
{
$qstring["status"] = 'Erro';
}
}
else
{
$qstring["status"] = 'Arquivo Inválido';
}
$this->load->view('csvToMySQL',$qstring);
}
CSV: