Ir para conteúdo
Fórum Script Brasil

gsguma

Membros
  • Total de itens

    10
  • Registro em

  • Última visita

Sobre gsguma

  • Data de Nascimento 05/01/1980

Contatos

  • Website URL
    http://www.gsguma.com.br

Perfil

  • Gender
    Male
  • Location
    Porto Alegre - RS

gsguma's Achievements

0

Reputação

  1. 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
  2. Galera gostaria de uma ajuda ai! Construi um leitor de xml, estou tentando capturar os dados de um xml, porém só está retornando a 1ª parte, gostaria de capturar também os dados entre as tags <image> e </image> (que contém as tags <title>,<url> e <link>). Visualizar leitor ainda não finalizado Parte simplificado do código: <?php $feed = "http://www.gsguma.com.br/rss/rss_d.php"; $xml_cab = simplexml_load_file($feed); foreach($xml_cab->channel as $chan) { $tit_cab = utf8_decode($chan->title); $url_cab = utf8_decode($chan->link); $des_cab = utf8_decode($chan->description); $cop_cab = utf8_decode($chan->copyright); } $xml_img = simplexml_load_file($feed); foreach($xml_img->image as $img) { $tit_img = utf8_decode($img->title[(title)]); $url_img = utf8_decode($img->url); $des_img = utf8_decode($img->link); } //Mostra dados array echo "<br />XML CAB (array)<br />"; print_r($xml_cab); echo "<br />XML IMG (array)<br />"; print_r($xml_img); //Mostra dados string //tag <channel> echo "<br />XML CAB (string)<br />"; echo ".$tit_cab."; echo ".$url_cab."; echo ".$des_cab."; echo ".$cop_cab."; //tag <image> echo "<br />XML IMG (string)<br />"; echo ".$tit_img."; echo ".$url_img."; echo ".$des_img."; ?> Vlw
  3. Gostaria de saber se é possível colocar mais esse trecho de código HTML no mesmo código do tópico acima, já que o mesmo contém ' (aspas simples) e como sou iniciante em delphi não sei ainda como tratar isso! onMouseOver="this.style.backgroundColor='#CCE7FF';" onMouseOut="this.style.backgroundColor='';" Vlw
  4. Galera gostaria de saber o que mudar no código abaixo para obter o tamanho (SIZE) da fonte usada na DBGrid (assim como já acontece com o Nome da Fonte e Estilo da Fonte neste mesmo código): Uses ShellApi; function ColorToHtml(mColor: TColor): string; begin mColor := ColorToRGB(mColor); Result := Format('#%.2x%.2x%.2x', [GetRValue(mColor), GetGValue(mColor), GetBValue(mColor)]); end; { ColorToHtml } function StrToHtml(mStr: string; mFont: TFont = nil): string; var vLeft, vRight: string; begin Result := mStr; Result := StringReplace(Result, '&', '&', [rfReplaceAll]); Result := StringReplace(Result, '<', '<', [rfReplaceAll]); Result := StringReplace(Result, '>', '>', [rfReplaceAll]); if not Assigned(mFont) then Exit; vLeft := Format('<FONT FACE="%s" COLOR="%s">', [mFont.Name, ColorToHtml(mFont.Color)]); vRight := '</FONT>'; if fsBold in mFont.Style then begin vLeft := vLeft + '<B>'; vRight := '</B>' + vRight; end; if fsItalic in mFont.Style then begin vLeft := vLeft + '<I>'; vRight := '</I>' + vRight; end; if fsUnderline in mFont.Style then begin vLeft := vLeft + '<U>'; vRight := '</U>' + vRight; end; if fsStrikeOut in mFont.Style then begin vLeft := vLeft + '<S>'; vRight := '</S>' + vRight; end; Result := vLeft + Result + vRight; end; { StrToHtml } function DBGridToHtmlTable(mDBGrid: TDBGrid; mStrings: TStrings; mCaption: TCaption = ''): Boolean; const cAlignText: array[TAlignment] of string = ('LEFT', 'RIGHT', 'CENTER'); var vColFormat: string; vColText: string; vAllWidth: Integer; vWidths: array of Integer; vBookmark: string; I, J: Integer; begin Result := False; if not Assigned(mStrings) then Exit; if not Assigned(mDBGrid) then Exit; if not Assigned(mDBGrid.DataSource) then Exit; if not Assigned(mDBGrid.DataSource.DataSet) then Exit; if not mDBGrid.DataSource.DataSet.Active then Exit; vBookmark := mDBGrid.DataSource.DataSet.Bookmark; mDBGrid.DataSource.DataSet.DisableControls; try J := 0; vAllWidth := 0; for I := 0 to mDBGrid.Columns.Count - 1 do if mDBGrid.Columns[I].Visible then begin Inc(J); SetLength(vWidths, J); vWidths[J - 1] := mDBGrid.Columns[I].Width; Inc(vAllWidth, mDBGrid.Columns[I].Width); end; if J <= 0 then Exit; mStrings.Clear; mStrings.Add(Format('<TABLE BGCOLOR="%s" BORDER=1 WIDTH="100%%">', [ColorToHtml(mDBGrid.Color)])); if mCaption <> '' then mStrings.Add(Format('<CAPTION>%s</CAPTION>', [StrToHtml(mCaption)])); vColFormat := ''; vColText := ''; vColFormat := vColFormat + '<TR>'#13#10; vColText := vColText + '<TR>'#13#10; J := 0; for I := 0 to mDBGrid.Columns.Count - 1 do if mDBGrid.Columns[I].Visible then begin vColFormat := vColFormat + Format( ' <TD BGCOLOR="%s" ALIGN=%s WIDTH="%d%%">DisplayText%d</TD>'#13#10, [ColorToHtml(mDBGrid.Columns[I].Color), cAlignText[mDBGrid.Columns[I].Alignment], Round(vWidths[J] / vAllWidth * 100), J]); vColText := vColText + Format( ' <TD BGCOLOR="%s" ALIGN=%s WIDTH="%d%%">%s</TD>'#13#10, [ColorToHtml(mDBGrid.Columns[I].Title.Color), cAlignText[mDBGrid.Columns[I].Alignment], Round(vWidths[J] / vAllWidth * 100), StrToHtml(mDBGrid.Columns[I].Title.Caption, mDBGrid.Columns[I].Title.Font)]); Inc(J); end; vColFormat := vColFormat + '</TR>'#13#10; vColText := vColText + '</TR>'#13#10; mStrings.Text := mStrings.Text + vColText; mDBGrid.DataSource.DataSet.First; while not mDBGrid.DataSource.DataSet.Eof do begin J := 0; vColText := vColFormat; for I := 0 to mDBGrid.Columns.Count - 1 do if mDBGrid.Columns[I].Visible then begin vColText := StringReplace(vColText, Format('>DisplayText%d<', [J]), Format('>%s<', [StrToHtml(mDBGrid.Columns[I].Field.DisplayText, mDBGrid.Columns[I].Font)]), [rfReplaceAll]); Inc(J); end; mStrings.Text := mStrings.Text + vColText; mDBGrid.DataSource.DataSet.Next; end; mStrings.Add('</TABLE>'); finally mDBGrid.DataSource.DataSet.Bookmark := vBookmark; mDBGrid.DataSource.DataSet.EnableControls; vWidths := nil; end; Result := True; end; { DBGridToHtmlTable } //BOTÃO VISUALIZAR EM HTML procedure TForm1.Button1Click(Sender: TObject); begin DBGridToHtmlTable(DBGrid1, Memo1.Lines, Caption); Memo1.Lines.SaveToFile('c:\temp.htm'); ShellExecute(Handle, nil, 'c:\temp.htm', nil, nil, SW_SHOW); end;
  5. Galera, Alguém pode dar uma força ai!!! conexao.ado_emissao.Close; conexao.ado_emissao.open; conexao.adq_emissao.active:=false; conexao.adq_emissao.sql.clear; conexao.adq_emissao.sql.add('update tabela set item='''+edit_item.text+''' where codigo='+edit_codigo.text+' '); conexao.adq_emissao.ExecSQL; Aplicação simples Delphi e access (tipo de dados tabela => codigo = integer longo "autonumeração ou auto increment") O que falta?
  6. Podeia me dar um exemplo de configuração qualquer só para eu pegar uma base? Mesmo assim muito obrigado pela ajuda! Claro, fiz um pequeno exemplo... Pode baixar neste link... Muito obrigado cara, consegui agora, não precisava do udl, era um erro no instalador, ele abria a 1ª vez beleza e na segunda dava erros...era apenas quando o instalador criava o icone, se referia a outro caminho..sei la...não dava...fiz o instalador com outro programa e deu certo, mas gostei da ideia do udl e estou usando em todas as applicaçoes aqui, estou começando a fazer uns programinhas bens smimples recem..hehe Muito obrigado pela força! Abraço..Se cuida!!! Ok, tópico encerrado...Agradeço a todos pela ajuda!
  7. Podeia me dar um exemplo de configuração qualquer só para eu pegar uma base? Mesmo assim muito obrigado pela ajuda!
  8. Como faço para iniciar o programa aberto e com o icone na tray! Com os passos abaixo consigo iniciar minimizado apenas! Alguém pode analisar e me dar uma dica? 1º Passo Na clausula Uses declare a Unit ShellApi Exemplo: uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, Registry, ShellApi; 2º Passo Abaixo da cláusula Uses, declarea constante const WM_TRAYICON=WM_USER+1; Exemplo: uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, Registry, ShellApi; const WM_TRAYICON=WM_USER+1; 3º Passo Na cláusula Private, digite as procedures a seguir: ... private { Private declarations } { Tratamento dos Ícones da Aplicação } procedure WMSysCommand(var Msg: TWMSysCommand); Message WM_SysCommand; procedure WMTrayIcon(var Msg: TMessage); Message WM_TRAYICON; procedure DestroyIcone; procedure CriaIcone; public { Public declarations } end; 4º Passo Digite a implementação a seguir para cada procedure. {Quando for necessário criar ou destruir nosso ícone, chamaremos as procedures CriaIcone e DestroyIcone respectivamente. A API Shel_NotifyIcon requer um ponteiro para uma variável do tipo TNotifyIconData, declarada na Unit ShellApi. procedure TForm1.CriaIcone; var NotifyIconData: TNotifyIconData; begin with NotifyIconData do begin cbSize:= SizeOf(TNotifyIconData); Wnd:= Self.Handle; uID:= 0; uCallbackMessage:= WM_TRAYICON; uFlags:= NIF_ICON or NIF_TIP or NIF_MESSAGE; hIcon:= Application.Icon.Handle; szTip:= 'Exemplo da utilização do TrayIcon by janbaceiredo'; end; Shell_NotifyIcon(NIM_ADD, @NotifyIconData); Application.ShowMainForm:= False; end; procedure TForm1.DestroyIcone; var NotifyIconData: TNotifyIconData; begin NotifyIconData.cbSize:= SizeOf(TNotifyIconData); NotifyIconData.Wnd:= Self.Handle; NotifyIconData.uID:= 0; NotifyIconData.uFlags:= 0; Shell_NotifyIcon(NIM_DELETE, @NotifyIconData); end; {Captura todas as mensagens enviadas para a aplicação. Neste caso, trabalhamos apenas com as mensagens SC_MINIMIZE e SC_MAXIMIZE, que são enviadas quando devemos Minimizar ou Maximizar o formulario da aplicação. Capturando estas mensagens para esconder o ícone da aplicação da Barra de Tarefas do Windows e para criar / destruir o ícone que ficará ao lado do relógio. Obs: Você pode trabalhar com outras mensagem também. Tipo SC_CLOSE, SC_RESTORE e etc.} procedure TForm1.WMSysCommand(var Msg: TWMSysCommand); begin case (Msg.CmdType) of SC_MINIMIZE: begin Self.Visible:= False; CriaIcone; end; SC_MAXIMIZE: begin Self.Visible:= True; end else Inherited end; end; {Quando dar um duplo clique sobre o ícone da aplicação, destrímos este mesmo ícone e exibimos o formulário principal. Isto só funciona se implementarmos um manipulador para as Mensagens WMTrayIcon, que é o que faremos abaixo. Lembra-se da constante declarada no ínicio de nossa Unit? Pois bem, ela é passada como parâmetro para esta procedure.} procedure TForm1.WMTrayIcon(var Msg: TMessage); var Pt: TPoint; begin if (Msg.LParam = WM_RBUTTONDOWN) then begin GetCursorPos(Pt); PopupMenu.Popup(Pt.X, Pt.Y); PopupMenu.AutoPopup:= False; end else if (Msg.LParam = WM_LBUTTONDBLCLK) then begin Self.Visible:= True; DestroyIcone; end; end; 5º Passo Adicione um componente PopupMenu na Guia Additional e altere seu nome para PopupMenu Nesse componente(PopupMenu) você vai adiconar as opções que devem aparecer quando o usuario clicar com o botão direito do mouse sobre o icone da sua aplicação que esta ao lado do relógio. Exemplo: Sair, Configurações, Opções, Maximixar e etc.... Citação: Caso você não coloque o componente PopupMenu no seu formulario, isso irá gerar um erro de acesso a memória quando você clicar com o botão direito do mouse sobre o icone da sua aplicação que ficará do lado do relógio do computador. Sendo assim, não se esqueça de colocar esse componente(PopupMenu). 6º Passo A ultima etapa para realizar a sua necessidade é fazer o programa ser inicializado junto com o Windows. Para realizar essa etapa você tem que declarar a unit Registry na cláusula Uses Exemplo: uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, Registry, ShellApi, Registry; 7º Passo Após isso, você deve digitar o código abaixo no Evento OnCreate procedure TForm1.FormCreate(Sender: TObject); var Reg: TRegistry; begin CriaIcone; try // Inicializa a variavel do tipo TRegistry Reg:= TRegistry.Create; // Define a hirearquia das pasta, a qual irá trabalhar. Reg.RootKey:= HKEY_LOCAL_MACHINE; // Cria/entra, dentro da pasta do registro no qual irá aguardar informação Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run', False); // Escreve a informção na chave // NomeDaChave, pode ser qualquer nome que você queira Reg.WriteString('NomeDaChave', Application.ExeName); // Fecha a chave do registro Reg.CloseKey; Finally Reg.Free; end; end; Se alguém puder ajudar e para quem quiser testar, o código funciona perfeitamente, sem usar adicionais como TTrayIcon e outros...
  9. Mayron...Já tinha tentado o que me disse, também tentei "..\banco.mdb" e não deu, até deu certo com ..\pasta_do_banco\banco.mdb, porém quando instalo ele pede o caminho de "..documentos and settings\pasta_do_banco\banco.mdb, não sei como resolver isso sem muita complicação! Se souber algo, me dá uma luz ai! Vlw pela ajuda de todos!
×
×
  • Criar Novo...