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

Ler Xml, Gravar dados no DB e Retornar Log


gsguma

Pergunta

Olá Pessoal,

Sou iniciante no que se refere à importação e exportação de arquivos em PHP, então gostaria de dicas para a melhor forma para realizar as seguintes tarefas:

1 - Faço o upload múltiplo de "arquivos" xml (~10).

2 - Faço um loop dos arquivos do diretório e abro 1 à 1.

3 - Leio o arquivo, linha por linha.

4 - Comparo para vê se o dado já existe no banco.

5 - Se não existir, vou inserirndo no banco de dados.

6 - No final gravo um arquivo txt com o log das operações NÃO reazlizadas (ou seja somente os os erros).

OBS:

1 - Já tenho um código para isso, porém não para vários arquivos.

2 - Utilizo a classe "simplexml.class.php".

3 - Existem arquivos com ~5.000 usuários ou +.

4 - Qualquer sugestão é bem vinda!

Código do arquivo Xml:

<usuarios>
  <usuario>
    <tipoenvio>NORMAL</tipoenvio>
    <movimento>I</movimento>
    <interno>12345</interno>
    <matricula>123456789012345</matricula>
    <nome>Fulano de tal</nome>
    <cpf>12345678900</cpf>
    <nascimento>31122010</nascimento>
    <endereco_residencial>
      <endereco>Rua 1</endereco>
      <numero>123</numero>
      <complemento>AP.1</complemento>
      <bairro>Centro</bairro>
      <cidade>Porto Alegre</cidade>
      <codcid>12345</codcid>
      <uf>RS</uf>
      <cep>99900123</cep>
    </endereco_residencial>
    <endereco_correspondencia>
      <endereco>Rua 1</endereco>
      <numero>123</numero>
      <complemento>AP.1</complemento>
      <bairro>Centro</bairro>
      <cidade>Porto Alegre</cidade>
      <codcid>12345</codcid>
      <uf>RS</uf>
      <cep>99900123</cep>
    </endereco_correspondencia>
    <fone>051-99999999</fone>
    <celular>051-99999999</celular>
    <email>email@email.com</email>
    <orgao>Ministério da cultura</orgao>
    <convenio>Não</convenio>
    <id>12</id>
    <senha>12345</senha>
    <dependente>
      <nome>Fulano dependente</nome>
      <grau>Filho</grau>
      <nascimento>31122010</nascimento>
    </dependente>
  </usuario>
</usuarios>
Código atual PHP (para 1 arquivo por vez):
<?PHP
session_start();
if(!$_SESSION['SSlogado']){ header("location: ../login/index_adm.htm"); }

require_once "simplexml.class.php"; 

$err = 0;  //erros
$exe = 0;  //executados

if ($_FILES["cpfile"]["tmp_name"]!=""){
//if (isset($_FILES["cpfile"]["tmp_name"])){

    $processo=false; //erro ao processar
    $nome = date("YmdHis") . $_FILES["cpfile"]["name"];

    $pathxml = getcwd() . "/arq/" . $nome;
    if (is_uploaded_file($_FILES["cpfile"]["tmp_name"])){
        if(!move_uploaded_file($_FILES["cpfile"]["tmp_name"], $pathxml)){
            echo "Ocorreu um erro inesperado ao carregar o arquivo.<br />";
        }
    }
    $processo=true; //arquivo salvo
}

if(!$processo){
    echo "Erro ao carregar arquivo!";

} else{
    
    $file = $pathxml;
    
    //$file = "bcoweb_02.xml"; 
    $sxml = new simplexml; 
    $data = $sxml->xml_load_file($file); 
    //print_r($data); 
    
    include("../inc/conBD.php");
    
    $i=0;

if(is_array($data->usuario)){

    foreach($data->usuario as $elemento){
    
    $pro = 0; //arquivos processados
  
        $dia = substr($elemento->nascimento,0,2);
        $mes = substr($elemento->nascimento,2,2);
        $ano = substr($elemento->nascimento,4,4);
        
        $id = $elemento->id;

        if($elemento->movimento=="A"){

            $strSQL  = "UPDATE tbusuario SET ";
            $strSQL .= "    usuario = '" . $elemento->matricula . "', ";
            $strSQL .= "    internoSaber = '" . $elemento->interno . "', ";
            $strSQL .= "    nome = '" . addslashes($elemento->nome) . "', ";
            $strSQL .= "    matricula = '" . $elemento->matricula . "', ";
            $strSQL .= "    orgao_trab = '" . addslashes($elemento->orgao) . "', ";
            $strSQL .= "    cpf = '" . $elemento->cpf . "', ";
            $strSQL .= "    email = '" . addslashes($elemento->email) . "', ";
            $strSQL .= "    datanascimento = STR_TO_DATE('$ano-$mes-$dia', '%Y-%m-%d'), ";
            $strSQL .= "    fone = '" . addslashes($elemento->fone) . "', "; 
            $strSQL .= "    fax = '" . addslashes($elemento->celular) . "', "; 
            $strSQL .= "    endereco = '" . addslashes($elemento->endereco_residencial->endereco) . "', ";
            $strSQL .= "    bairro = '" . addslashes($elemento->endereco_residencial->bairro) . "', ";

            if (($elemento->endereco_residencial->codcid!="") && (!is_array($elemento->endereco_residencial->codcid)) && ($elemento->endereco_residencial->codcid!="Array") ){
                $strSQL .= "    codCidade = " . $elemento->endereco_residencial->codcid . ", ";
            }
            $strSQL .= "    uf = '" . addslashes($elemento->endereco_residencial->uf) . "', ";
            $strSQL .= "    cep = '" . addslashes($elemento->endereco_residencial->cep) . "', ";
            $strSQL .= "    endereco_p = '" . addslashes($elemento->endereco_correspondencia->endereco) . "', ";
            $strSQL .= "    bairro_p = '" . addslashes($elemento->endereco_correspondencia->bairro) . "', ";

            if (($elemento->endereco_correspondencia->codcid!="") && (!is_array($elemento->endereco_correspondencia->codcid)) && ($elemento->endereco_correspondencia->codcid!="Array") ){
                $strSQL .= "    codCidade_p = " . $elemento->endereco_correspondencia->codcid . ", ";
            }
            $strSQL .= "    uf_p = '" . addslashes($elemento->endereco_correspondencia->uf) . "', ";
            $strSQL .= "    cep_p = '" . addslashes($elemento->endereco_correspondencia->cep) . "', ";
            $strSQL .= "    ativo = 1 , ";
            $strSQL .= "    convenio = '" . $elemento->convenio . "' ";
            $strSQL .= " WHERE id = " . $id;
            
      if (Usuario_Existe($id)){
        @mysql_query($strSQL) or die("Erro ao executar:<br /><b>$strSQL</b><br />" . mysql_error());
               echo "<br /><hr /><b>Associado alterado: </b>" . $elemento->nome;
               $pro=1;
      } else {
               echo "<br /><hr /><b><font color='red'>ID do associado não encontrado! </font></b>(ID = ".$id.") ".$elemento->nome;
             }
            
        } elseif($elemento->movimento=="I"){
                if( ($id!="") && (!is_array($id)) && ($id!="Array") ){
                    //se é do tipo MASSA e tem id, então update
                    $strSQL  = "UPDATE tbusuario SET ";
                    $strSQL .= "    usuario = '" . $elemento->matricula . "', ";
                    $strSQL .= "    internoSaber = '" . $elemento->interno . "', ";
                    $strSQL .= "    nome = '" . addslashes($elemento->nome) . "', ";
                    $strSQL .= "    matricula = '" . $elemento->matricula . "', ";
                    $strSQL .= "    orgao_trab = '" . addslashes($elemento->orgao) . "', ";
                    $strSQL .= "    cpf = '" . $elemento->cpf . "', ";
                    $strSQL .= "    email = '" . addslashes($elemento->email) . "', ";
                    $strSQL .= "    datanascimento = STR_TO_DATE('$ano-$mes-$dia', '%Y-%m-%d'), ";
                    $strSQL .= "    fone = '" . addslashes($elemento->fone) . "', "; 
                    $strSQL .= "    fax = '" . addslashes($elemento->celular) . "', "; 
                    $strSQL .= "    endereco = '" . addslashes($elemento->endereco_residencial->endereco) . "', ";
                    $strSQL .= "    bairro = '" . addslashes($elemento->endereco_residencial->bairro) . "', ";
                    if (($elemento->endereco_residencial->codcid!="") && (!is_array($elemento->endereco_residencial->codcid)) && ($elemento->endereco_residencial->codcid!="Array") ){
                        $strSQL .= "    codCidade = " . $elemento->endereco_residencial->codcid . ", ";
                    }
                    $strSQL .= "    uf = '" . addslashes($elemento->endereco_residencial->uf) . "', ";
                    $strSQL .= "    cep = '" . addslashes($elemento->endereco_residencial->cep) . "', ";
                    $strSQL .= "    endereco_p = '" . addslashes($elemento->endereco_correspondencia->endereco) . "', ";
                    $strSQL .= "    bairro_p = '" . addslashes($elemento->endereco_correspondencia->bairro) . "', ";
                    if (($elemento->endereco_correspondencia->codcid!="") && (!is_array($elemento->endereco_correspondencia->codcid)) && ($elemento->endereco_correspondencia->codcid!="Array") ){
                        $strSQL .= "    codCidade_p = " . $elemento->endereco_correspondencia->codcid . ", ";
                    }
                    $strSQL .= "    uf_p = '" . addslashes($elemento->endereco_correspondencia->uf) . "', ";
                    $strSQL .= "    cep_p = '" . addslashes($elemento->endereco_correspondencia->cep) . "', ";
                    $strSQL .= "    ativo = 1 , ";
                    $strSQL .= "    convenio = '" . $elemento->convenio . "' ";
                    $strSQL .= " WHERE id = " . $id;
                    
          if (Usuario_Existe($id)){
            @mysql_query($strSQL) or die("Erro ao executar:<br /><b>$strSQL</b><br />" . mysql_error());
                   echo "<br /><hr /><b>Associado alterado: </b>" . $elemento->nome;
                   $pro=1;
          } else {
                   echo "<br /><hr /><b><font color='red'>ID do associado não encontrado! </font></b>(ID = ".$id.") ".$elemento->nome;
                 }
                    
                } else {
                    //se é massa e não tem id, então insert
                    $strSQL  = "INSERT INTO tbusuario( ";
                    $strSQL .= "    usuario, internoSaber, senha, nome, matricula, orgao_trab, cpf, email, datanascimento, tipo, fone, fax, ";
                    $strSQL .= "    endereco, bairro, ";
                    if ($elemento->endereco_residencial->codcid!=""){
                        $strSQL .= "    codCidade, ";
                    }
                    $strSQL .= "    uf, cep, ";
                    $strSQL .= "    endereco_p, bairro_p, ";
                    if ($elemento->endereco_correspondencia->codcid!=""){
                        $strSQL .= "    codCidade_p, ";
                    }
                    $strSQL .= "    uf_p, cep_p, ";
                    $strSQL .= "    ativo, convenio, c_usuario, c_data, alterado_web ";
                    $strSQL .= ") VALUES ( ";
                    $strSQL .= " '" . $elemento->matricula . "', ";
                    $strSQL .= " '" . $elemento->interno . "', ";
                    $strSQL .= " '" . md5("12345") . "', ";
                    $strSQL .= " '" . addslashes($elemento->nome) . "', ";
                    $strSQL .= " '" . $elemento->matricula . "', ";
                    $strSQL .= " '" . addslashes($elemento->orgao) . "', ";
                    $strSQL .= " '" . $elemento->cpf . "', ";
                    $strSQL .= " '" . addslashes($elemento->email) . "', ";
                    $strSQL .= " STR_TO_DATE('$ano-$mes-$dia', '%Y-%m-%d'), ";
                    $strSQL .= " 'P', ";
                    $strSQL .= " '" . addslashes($elemento->fone) . "', '" . addslashes($elemento->celular) . "', ";
                
                    $strSQL .= " '" . addslashes($elemento->endereco_residencial->endereco) . "', ";
                    $strSQL .= " '" . addslashes($elemento->endereco_residencial->bairro) . "', ";
                    if (($elemento->endereco_residencial->codcid!="") && (!is_array($elemento->endereco_residencial->codcid)) && ($elemento->endereco_residencial->codcid!="Array") ){
                        $strSQL .= " " . addslashes($elemento->endereco_residencial->codcid) . ", ";
                    }
                    $strSQL .= " '" . addslashes($elemento->endereco_residencial->uf) . "', ";
                    $strSQL .= " '" . addslashes($elemento->endereco_residencial->cep) . "', ";
                
                    $strSQL .= " '" . addslashes($elemento->endereco_correspondencia->endereco) . "', ";
                    $strSQL .= " '" . addslashes($elemento->endereco_correspondencia->bairro) . "', ";
                    if (($elemento->endereco_correspondencia->codcid!="") && (!is_array($elemento->endereco_correspondencia->codcid)) && ($elemento->endereco_correspondencia->codcid!="Array") ){
                        $strSQL .= " " . addslashes($elemento->endereco_correspondencia->codcid) . ", ";
                    }
                    $strSQL .= " '" . addslashes($elemento->endereco_correspondencia->uf) . "', ";
                    $strSQL .= " '" . addslashes($elemento->endereco_correspondencia->cep) . "', ";
                    
                    $strSQL .= " 1, ";
                    $strSQL .= " '" . $elemento->convenio . "', ";
                    $strSQL .= " 'importacao', ";
                    $strSQL .= " STR_TO_DATE('" . date('Y-m-d') . "', '%Y-%m-%d'), ";
                    $strSQL .= " true) ";
                    
                    if (!Usuario_Existe($elemento->interno,1)){
            @mysql_query($strSQL) or die("Erro ao executar:<br /><b>$strSQL</b><br />" . mysql_error());
                      $id = mysql_insert_id();
                      echo "<br /><hr /><b>Associado incluído: </b>" . $elemento->nome;
                      $pro=1;
                  } else {
                      echo "<br /><hr /><b><font color='red'>Associado já existente!</font></b> (Código interno = ".$elemento->interno.") ".$elemento->nome;
                    }
                }

        } elseif($elemento->movimento=="E"){
            $strSQL  = "UPDATE tbusuario SET ativo = 0 ";
            $strSQL .= "WHERE id = $id ";
            
      if (Usuario_Existe($id)){
        @mysql_query($strSQL) or die("Erro ao executar:<br /><b>$strSQL</b><br />" . mysql_error());
               echo "<br /><hr /><b>Associado desativado: </b>" . $elemento->nome;
               $pro=1;
      } else {
               echo "<br /><hr /><b><font color='red'>ID do associado não encontrado! </font></b>(ID = ".$id.") ".$elemento->nome;
             }

        }
        
    //incrementando processados e erros
    if ($pro == 1){ $exe++; } else { $err++; }

    // ATUALIZAÇÃO DOS DEPENDENTES
        //
        //só entra se NÃO for do tipo $elemento->movimento=="E"
        //
        if($elemento->movimento!="E" && $pro == 1){

      //DELETA TODOS OS DEPENDENTES E INSERE NOVAMENTE PARA NÃO PRECISAR VERFICAR QUAIS PRECISAM SER ATUALIZADOS
            $strSQL  = "DELETE FROM tbusuario_dep WHERE tbusuario_id = $id ";

      @mysql_query($strSQL) or die("Erro ao executar:<br /><b>$strSQL</b><br />" . mysql_error());
            
            if(is_array($elemento->dependente)){
                foreach($elemento->dependente as $dep){
                    $dia = substr($dep->nascimento,0,2);
                    $mes = substr($dep->nascimento,2,2);
                    $ano = substr($dep->nascimento,4,4);
        
                    $strSQL  = "INSERT INTO tbusuario_dep( ";
                    $strSQL .= "    tbusuario_id, nome, grau, datanascimento ";
                    $strSQL .= ") VALUES ( ";
                    $strSQL .= " " . $id . ", ";
                    $strSQL .= " '" . addslashes($dep->nome) . "', ";
                    $strSQL .= " '" . addslashes($dep->grau) . "', ";
                    $strSQL .= " STR_TO_DATE('$ano-$mes-$dia', '%Y-%m-%d') ";
                    $strSQL .= ") ";
    
                    @mysql_query($strSQL) or die("Erro ao executar:<br /><b>$strSQL</b><br />" . mysql_error());
                    echo "<br /><b>Dependente inserido: </b>" . $dep->nome;
                }
        
            } else {
                //SE NÃO FOR ARRAY VAI POR AQUI
                if($elemento->dependente->nome != ""){
                    $dia = substr($elemento->dependente->nascimento,0,2);
                    $mes = substr($elemento->dependente->nascimento,2,2);
                    $ano = substr($elemento->dependente->nascimento,4,4);
        
                    $strSQL  = "INSERT INTO tbusuario_dep( ";
                    $strSQL .= "    tbusuario_id, nome, grau, datanascimento ";
                    $strSQL .= ") VALUES ( ";
                    $strSQL .= " " . $id . ", ";
                    $strSQL .= " '" . addslashes($elemento->dependente->nome) . "', ";
                    $strSQL .= " '" . addslashes($elemento->dependente->grau) . "', ";
                    $strSQL .= " STR_TO_DATE('$ano-$mes-$dia', '%Y-%m-%d') ";
                    $strSQL .= ") ";
    
                    @mysql_query($strSQL) or die("Erro ao executar:<br /><b>$strSQL</b><br />" . mysql_error());
    
                    echo "<br /><b>Dependente inserido: </b>" . $elemento->dependente->nome;
                }
            } //SAINDO DO IF DE VERIFICAÇÃO SE É ARRAY



        }//fim das inclusões de dependentes em caso de não exclusão de associado
    
        $i++;
    } //SAI DO FOREACH QUE VARRE OS USUÁRIOS


//////#############################################################



} else {    //SE TIVER APENAS UM USUÁRIO TEM QUE CRIAR A SOLUÇÃO AQUI
    $pro = 0;

        $dia = substr($data->usuario->nascimento,0,2);
        $mes = substr($data->usuario->nascimento,2,2);
        $ano = substr($data->usuario->nascimento,4,4);
        
        $id = $data->usuario->id;

        if($data->usuario->movimento=="A"){
            $strSQL  = "UPDATE tbusuario SET ";
            $strSQL .= "    usuario = '" . $data->usuario->matricula . "', ";
            $strSQL .= "    internoSaber = '" . $data->usuario->interno . "', ";
            $strSQL .= "    nome = '" . addslashes($data->usuario->nome) . "', ";
            $strSQL .= "    matricula = '" . $data->usuario->matricula . "', ";
            $strSQL .= "    orgao_trab = '" . addslashes($data->usuario->orgao) . "', ";
            $strSQL .= "    cpf = '" . $data->usuario->cpf . "', ";
            $strSQL .= "    email = '" . addslashes($data->usuario->email) . "', ";
            $strSQL .= "    datanascimento = STR_TO_DATE('$ano-$mes-$dia', '%Y-%m-%d'), ";
            $strSQL .= "    fone = '" . addslashes($data->usuario->fone) . "', "; 
            $strSQL .= "    fax = '" . addslashes($data->usuario->celular) . "', "; 
            $strSQL .= "    endereco = '" . addslashes($data->usuario->endereco_residencial->endereco) . "', ";
            $strSQL .= "    bairro = '" . addslashes($data->usuario->endereco_residencial->bairro) . "', ";
            if (($data->usuario->endereco_residencial->codcid!="") && (!is_array($data->usuario->endereco_residencial->codcid)) && ($data->usuario->endereco_residencial->codcid!="Array") ){
                $strSQL .= "    codCidade = " . $data->usuario->endereco_residencial->codcid . ", ";
            }
            $strSQL .= "    uf = '" . addslashes($data->usuario->endereco_residencial->uf) . "', ";
            $strSQL .= "    cep = '" . addslashes($data->usuario->endereco_residencial->cep) . "', ";
            $strSQL .= "    endereco_p = '" . addslashes($data->usuario->endereco_correspondencia->endereco) . "', ";
            $strSQL .= "    bairro_p = '" . addslashes($data->usuario->endereco_correspondencia->bairro) . "', ";
            if (($data->usuario->endereco_correspondencia->codcid!="") && (!is_array($data->usuario->endereco_correspondencia->codcid)) && ($data->usuario->endereco_correspondencia->codcid!="Array") ){
                $strSQL .= "    codCidade_p = " . $data->usuario->endereco_correspondencia->codcid . ", ";
            }
            $strSQL .= "    uf_p = '" . addslashes($data->usuario->endereco_correspondencia->uf) . "', ";
            $strSQL .= "    cep_p = '" . addslashes($data->usuario->endereco_correspondencia->cep) . "', ";
            $strSQL .= "    ativo = 1 , ";
            $strSQL .= "    convenio = '" . $data->usuario->convenio . "' ";
            $strSQL .= " WHERE id = " . $id;
            
      if (Usuario_Existe($id)){
        @mysql_query($strSQL) or die("Erro ao executar:<br /><b>$strSQL</b><br />" . mysql_error());
               echo "<br /><hr /><b>Associado alterado: </b>" . $data->usuario->nome;
               $pro=1;
      } else {
               echo "<br /><hr /><b><font color='red'>ID do associado não encontrado! </font></b>(ID = ".$id.") ".$elemento->nome;
             }
            
        } elseif($data->usuario->movimento=="I"){
//            if($data->tipoenvio=="MASSA"){
                if( ($id!="") && (!is_array($id)) && ($id!="Array") ){
                    //se é do tipo MASSA e tem id, então update
                    $strSQL  = "UPDATE tbusuario SET ";
                    $strSQL .= "    usuario = '" . $data->usuario->matricula . "', ";
                    $strSQL .= "    internoSaber = '" . $data->usuario->interno . "', ";
                    $strSQL .= "    nome = '" . addslashes($data->usuario->nome) . "', ";
                    $strSQL .= "    matricula = '" . $data->usuario->matricula . "', ";
                    $strSQL .= "    orgao_trab = '" . addslashes($data->usuario->orgao) . "', ";
                    $strSQL .= "    cpf = '" . $data->usuario->cpf . "', ";
                    $strSQL .= "    email = '" . addslashes($data->usuario->email) . "', ";
                    $strSQL .= "    datanascimento = STR_TO_DATE('$ano-$mes-$dia', '%Y-%m-%d'), ";
                    $strSQL .= "    fone = '" . addslashes($data->usuario->fone) . "', "; 
                    $strSQL .= "    fax = '" . addslashes($data->usuario->celular) . "', "; 
                    $strSQL .= "    endereco = '" . addslashes($data->usuario->endereco_residencial->endereco) . "', ";
                    $strSQL .= "    bairro = '" . addslashes($data->usuario->endereco_residencial->bairro) . "', ";
                    if (($data->usuario->endereco_residencial->codcid!="") && (!is_array($data->usuario->endereco_residencial->codcid)) && ($data->usuario->endereco_residencial->codcid!="Array") ){
                        $strSQL .= "    codCidade = " . $data->usuario->endereco_residencial->codcid . ", ";
                    }
                    $strSQL .= "    uf = '" . addslashes($data->usuario->endereco_residencial->uf) . "', ";
                    $strSQL .= "    cep = '" . addslashes($data->usuario->endereco_residencial->cep) . "', ";
                    $strSQL .= "    endereco_p = '" . addslashes($data->usuario->endereco_correspondencia->endereco) . "', ";
                    $strSQL .= "    bairro_p = '" . addslashes($data->usuario->endereco_correspondencia->bairro) . "', ";
                    if (($data->usuario->endereco_correspondencia->codcid!="") && (!is_array($data->usuario->endereco_correspondencia->codcid)) && ($data->usuario->endereco_correspondencia->codcid!="Array") ){
                        $strSQL .= "    codCidade_p = " . $data->usuario->endereco_correspondencia->codcid . ", ";
                    }
                    $strSQL .= "    uf_p = '" . addslashes($data->usuario->endereco_correspondencia->uf) . "', ";
                    $strSQL .= "    cep_p = '" . addslashes($data->usuario->endereco_correspondencia->cep) . "', ";
                    $strSQL .= "    ativo = 1 , ";
                    $strSQL .= "    convenio = '" . $data->usuario->convenio . "' ";
                    $strSQL .= " WHERE id = " . $id;
                    
          if (Usuario_Existe($id)){
            @mysql_query($strSQL) or die("Erro ao executar:<br /><b>$strSQL</b><br />" . mysql_error());
                   echo "<br /><hr /><b>Associado alterado: </b>" . $data->usuario->nome;
                   $pro=1;
          } else {
                   echo "<br /><hr /><b><font color='red'>ID do associado não encontrado! </font></b>(ID = ".$id.") ".$elemento->nome;
                 }
                 
                } else {
                    //se é massa e não tem id, então insert
                    $strSQL  = "INSERT INTO tbusuario( ";
                    $strSQL .= "    usuario, internoSaber, senha, nome, matricula, orgao_trab, cpf, email, datanascimento, tipo, fone, fax, ";
                    $strSQL .= "    endereco, bairro, ";
                    if ($data->usuario->endereco_residencial->codcid!=""){
                        $strSQL .= "    codCidade, ";
                    }
                    $strSQL .= "    uf, cep, ";
                    $strSQL .= "    endereco_p, bairro_p, ";
                    if ($data->usuario->endereco_correspondencia->codcid!=""){
                        $strSQL .= "    codCidade_p, ";
                    }
                    $strSQL .= "    uf_p, cep_p, ";
                    $strSQL .= "    ativo, convenio, c_usuario, c_data, alterado_web ";
                    $strSQL .= ") VALUES ( ";
                    $strSQL .= " '" . $data->usuario->matricula . "', ";
                    $strSQL .= " '" . $data->usuario->interno . "', ";
                    $strSQL .= " '" . md5("12345") . "', ";
                    $strSQL .= " '" . addslashes($data->usuario->nome) . "', ";
                    $strSQL .= " '" . $data->usuario->matricula . "', ";
                    $strSQL .= " '" . addslashes($data->usuario->orgao) . "', ";
                    $strSQL .= " '" . $data->usuario->cpf . "', ";
                    $strSQL .= " '" . addslashes($data->usuario->email) . "', ";
                    $strSQL .= " STR_TO_DATE('$ano-$mes-$dia', '%Y-%m-%d'), ";
                    $strSQL .= " 'P', ";
                    $strSQL .= " '" . addslashes($data->usuario->fone) . "', '" . addslashes($data->usuario->celular) . "', ";
                
                    $strSQL .= " '" . addslashes($data->usuario->endereco_residencial->endereco) . "', ";
                    $strSQL .= " '" . addslashes($data->usuario->endereco_residencial->bairro) . "', ";
                    if (($data->usuario->endereco_residencial->codcid!="") && (!is_array($data->usuario->endereco_residencial->codcid)) && ($data->usuario->endereco_residencial->codcid!="Array") ){
                        $strSQL .= " " . addslashes($data->usuario->endereco_residencial->codcid) . ", ";
                    }
                    $strSQL .= " '" . addslashes($data->usuario->endereco_residencial->uf) . "', ";
                    $strSQL .= " '" . addslashes($data->usuario->endereco_residencial->cep) . "', ";
                
                    $strSQL .= " '" . addslashes($data->usuario->endereco_correspondencia->endereco) . "', ";
                    $strSQL .= " '" . addslashes($data->usuario->endereco_correspondencia->bairro) . "', ";
                    if (($data->usuario->endereco_correspondencia->codcid!="") && (!is_array($data->usuario->endereco_correspondencia->codcid)) && ($data->usuario->endereco_correspondencia->codcid!="Array") ){
                        $strSQL .= " " . addslashes($data->usuario->endereco_correspondencia->codcid) . ", ";
                    }
                    $strSQL .= " '" . addslashes($data->usuario->endereco_correspondencia->uf) . "', ";
                    $strSQL .= " '" . addslashes($data->usuario->endereco_correspondencia->cep) . "', ";
                    
                    $strSQL .= " 1, ";
                    $strSQL .= " '" . $data->usuario->convenio . "', ";
                    $strSQL .= " 'importacao', ";
                    $strSQL .= " STR_TO_DATE('" . date('Y-m-d') . "', '%Y-%m-%d'), ";
                    $strSQL .= " true) ";
                    
                //    echo $strSQL . "<br><br><br><br>";
                    
                    if (!Usuario_Existe($elemento->interno,1)){
            @mysql_query($strSQL) or die("Erro ao executar:<br /><b>$strSQL</b><br />" . mysql_error());
                      $id = mysql_insert_id();
                      echo "<br /><hr /><b>Associado incluído: </b>" . $data->usuario->nome;
                      $pro=1;
                  } else {
                      echo "<br /><hr /><b><font color='red'>Associado já existente!</font></b> (Código interno = ".$elemento->interno.") ".$elemento->nome;
                    }
                }
        } elseif($data->usuario->movimento=="E"){
            $strSQL  = "UPDATE tbusuario SET ativo = 0 ";
            $strSQL .= "WHERE id = $id ";
            
      if (Usuario_Existe($id)){
        @mysql_query($strSQL) or die("Erro ao executar:<br /><b>$strSQL</b><br />" . mysql_error());
               echo "<br /><hr /><b>Associado desativado: </b>" . $data->usuario->nome;
               $pro=1;
      } else {
               echo "<br /><hr /><b><font color='red'>ID do associado não encontrado! </font></b>(ID = ".$id.") ".$elemento->nome;
             }
        
        }

    //incrementando processados e erros
    if ($pro == 1){ $exe++; } else { $err++; }


    /*---------------------------------------------------
       DEPENDENTES
    ---------------------------------------------------*/

    //só entra se NÃO for do tipo $data->usuario->movimento=="E"
        if($data->usuario->movimento!="E" && $pro ==1){
        
            //DELETA TODOS OS DEPENDENTES E INSERE NOVAMENTE PARA NÃO PRECISAR VERFICAR QUAIS PRECISAM SER ATUALIZADOS
            $strSQL  = "DELETE FROM tbusuario_dep WHERE tbusuario_id = $id ";
            @mysql_query($strSQL) or die("Erro ao executar:<br><b>$strSQL</b><br>" . mysql_error());
            
            if(is_array($data->usuario->dependente)){
                foreach($data->usuario->dependente as $dep){
                    $dia = substr($dep->nascimento,0,2);
                    $mes = substr($dep->nascimento,2,2);
                    $ano = substr($dep->nascimento,4,4);
        
                    $strSQL  = "INSERT INTO tbusuario_dep( ";
                    $strSQL .= "    tbusuario_id, nome, grau, datanascimento ";
                    $strSQL .= ") VALUES ( ";
                    $strSQL .= " " . $id . ", ";
                    $strSQL .= " '" . addslashes($dep->nome) . "', ";
                    $strSQL .= " '" . addslashes($dep->grau) . "', ";
                    $strSQL .= " STR_TO_DATE('$ano-$mes-$dia', '%Y-%m-%d') ";
                    $strSQL .= ") ";
    
                    @mysql_query($strSQL) or die("Erro ao executar:<br /><b>$strSQL</b><br />" . mysql_error());
                    echo "<br /><b>Dependente inserido: </b>" . $dep->nome;
                }
        
            } else {
                //SE NÃO FOR ARRAY VAI POR AQUI
                if($data->usuario->dependente->nome != ""){
                    $dia = substr($data->usuario->dependente->nascimento,0,2);
                    $mes = substr($data->usuario->dependente->nascimento,2,2);
                    $ano = substr($data->usuario->dependente->nascimento,4,4);
        
                    $strSQL  = "INSERT INTO tbusuario_dep( ";
                    $strSQL .= "    tbusuario_id, nome, grau, datanascimento ";
                    $strSQL .= ") VALUES ( ";
                    $strSQL .= " " . $id . ", ";
                    $strSQL .= " '" . addslashes($data->usuario->dependente->nome) . "', ";
                    $strSQL .= " '" . addslashes($data->usuario->dependente->grau) . "', ";
                    $strSQL .= " STR_TO_DATE('$ano-$mes-$dia', '%Y-%m-%d') ";
                    $strSQL .= ") ";
    
                    @mysql_query($strSQL) or die("Erro ao executar:<br /><b>$strSQL</b><br />" . mysql_error());
    
                    echo "<br /><b>Dependente inserido: </b>" . $data->usuario->dependente->nome;
                }
            } //SAINDO DO IF DE VERIFICAÇÃO SE É ARRAY
        }//fim das inclusões de dependentes em caso de não exclusão de associado
    
        $i++;
}

echo "<hr />";
echo "<br /><br />

      <br /><br />
      <table>";

if ($data -> id){
echo "  <tr>
          <td width='250px'><b>Identificador de Envio</b></td><td>".$data -> id."</td>
        </tr>
        <tr>
          <td width='250px' colspan='2'> </td>
        </tr>";
}
echo "  <tr>
          <td width='250px'><b>Arquivo</b></td><td>".$_FILES["cpfile"]["name"]."</td>
        </tr>
        <tr>
          <td width='250px' colspan='2'> </td>
        </tr>
        <tr>
          <td width='250px'><b>Total de registros lidos</b></td><td>$i</td>
        </tr>
        <tr>
          <td width='250px'><b>Total de registros processados</b></td><td>$exe</td>
        </tr>
        <tr>
          <td width='250px'><b>Total de registros com erro</b></td><td>$err</td>
        </tr>
      </table>
      <br /><br />
      <b>Importação do arquivo concluída!";
      
     if ($err){
       echo "<br /><br /><b><font color='red'>VERIFIQUE OS REGISTROS IGNORADOS POR ERRO PARA O PROCEDIMENTO ADEQUADO!</font></b>";
     }

} //FIM DO IF DE VERIFICAÇÃO SE O ARQUIVO FOI CARREGADO


/*-----------------------------------
  Verifica se usuario já existe
  -----------------------------------
  $chave = Item a ser pesquisado
  $tipo = NULL -> Por ID
  $tipo = 1 -> Por Codigo Saber
  $tipo = 2 -> Por Matricula
  $tipo = 3 -> Por CPF
  $tipo = 4 -> Por Usuario
-----------------------------------*/
function Usuario_Existe($chave, $tipo = NULL){
  $sql = "SELECT `id`, `internoSaber` FROM `tbusuario` WHERE ";
  switch ($tipo) {
    case 1:
      $sql .= "`internoSaber` = '$chave' LIMIT 0,1";
      break;
    case 2:
      $sql .= "`matricula` = '$chave' LIMIT 0,1";
      break;
    case 3:
      $sql .= "`cpf` = '$chave' LIMIT 0,1";
      break;
    case 4:
      $sql .= "`usuario` = '$chave' LIMIT 0,1";
      break;
    default:
      $sql .= "`id` = '$chave' LIMIT 0,1";
  }
  $res = @mysql_query($sql);
  if (@mysql_num_rows($res)>0){
    return true; //existe
  } else {
    return false;  //não existe ainda
  }
}

@mysql_free_result($RS);
@mysql_free_result($res);
@mysql_close($conexao);

?>

Vlw

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

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...