Ir para o conteúdo

Publicidade

 Estatísticas do Fórum

  • 0 Usuários ativos

    0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

Foto:

[Resolvido] Ler Xml, Gravar dados no DB e Retornar Log

  • Por favor, faça o login para responder
3 respostas neste tópico

#1 Gilton Guma

Gilton Guma
  • Membros
  • 11 posts

Postado 02 junho 2010 - 16:42

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'>&nbsp;</td>
        </tr>";
}
echo "  <tr>
          <td width='250px'><b>Arquivo</b></td><td>".$_FILES["cpfile"]["name"]."</td>
        </tr>
        <tr>
          <td width='250px' colspan='2'>&nbsp;</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 ja 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;  //nao existe ainda
  }
}

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

?>

Vlw
  • 0

#2 kakaroto developer

kakaroto developer
  • Membros
  • 236 posts

Postado 03 junho 2010 - 00:09

Ola Amigo Gilton Guma

pode parece uma pergunta idiota ,mais perguntar nao ofende
qual parte do seu codigo esta com erro ou qual parte nao esta executando no seu code

ou seja o que você nao esta conseguindo fazer :( para eu pode te ajudar se eu pode e claro :)
  • 0

#3 Evandro Oliveira

Evandro Oliveira

    leia ali -->

  • Membros
  • 4.492 posts

Postado 03 junho 2010 - 01:10

para os uploads:

Alternativa com jQuery: http://www.uploadify.com/
Alternativa com Flash: http://demo.swfupload.org/v220/

Você receberá os arquivos na superglobal $_FILES[]

itere entre eles, utilizando SimpleXML, utilize uma biblioteca mais atualizada como PDO ou MySQLi para pular as inúmeras linhas onde você addslashes() (isso não será mais necessário).

Para diminuir o número de consultas, torne o campo nome em UNIQUE e verifique com a função de contar linhas alteradas da biblioteca que estiver utilizando se houve ou não inclusão de linha. Em caso negativo, adicione o registro ao log.

Qualquer dificuldade em algum passo, volte a postar.
  • 0

#4 Gilton Guma

Gilton Guma
  • Membros
  • 11 posts

Postado 16 janeiro 2011 - 05:56

Pessoal,
Consegui resolver este tópico no mesmo dia, desculpem a demora para responder, estava super sem tempo e só não coloquei o código por que é ficaria muito grande e na verdade utilizei o mesmo script informado acima, porém sendo chamado pelo uploadfy, caso alguém precise de alguma dica parecida é só postar ai. :)

@Kakaroto: Na verdade não tem nenhum erro, apenas queria uma ajuda para fazer a mesma coisa para vários arquivos, como está descrito em "OBS".
@Evandro: Eu nem cheguei a ler sua resposta, mas acabei optando pelo uploadfy (jQuery) mesmo assim, a propósito, belas dicas.

Obrigado pelas respostas!

Abração...Se cuidem!!!
  • 0