last day (16 days later) » 

11:08 PM
0
Q: Como realizar as consultas via web-service?

Marcos Vinicius Nasc. PereiraTenho um sistema para desenvolver cujo dados estão estocados no web-service. Através da consulta com PHP estou buscando dados num XML que está sendo gerado por um cron que dispara de hora em hora no meu servidor para gerar novas informações. Devo colocar os dados do XML gerado tudo num banco de...

 
Isso vai depender do projeto... Geralmente o DB serve para guardar as informações e o XML para servir uma requisição. Eu guardaria no DB, mas se forem temporários eu manteria o XML.
 
@PapaCharlie independente da consulta ser no XML ou Banco de dados, a complexidade das consultas é mesma? Outra coisa: o CDATA serve para eliminar qualquer possibilidade de pontuação?
 
Eles são dados temporários ou você vai precisar deles em definitivo?
 
@Papa Charlie vou precisar destes dados que podem ser atualizados a qualquer momento mas estas atualizações podem se dar também depois de 1 ou 2 anos. É uma imobiliária que tem seus clientes. O que me recomenda? Consulta no XML ou faz um cron que vai fazer um dump do XML no banco de tempo em tempo?
 
Nesse caso DB é a escolha. O problema seria a atualização de um campo, pois imagino que não seja informado qual sofreu atualização. Mesmo assim o DB é necessário se você vai servir estes dados em consulta. Seria inviável catalogar o XML para fazer uma consulta baseada em múltiplas opções.
 
11:08 PM
Um chapéu tirado pra @PapaCharlie, há dias estou buscando alguém que que me esclareça isto. Então tenho que montar um banco de dados baseado nos campos do XML e dumpar pra ele de tempos em tempos por exemplo através de um cron?
 
O XML retorna informações do imóvel, e serão a base de uma consulta (estado, cidade, quartos, etc), sim, deve ser um DB. Como você sabe que há atualização em uma informação? Tem alguma FLAG no XML?
opa
 
Eu ainda não sei como fazer para controlar se houve modificação nas informações do web-service. Pensei em fazer um dump do banco gerando um novo XML a cada 24 horas. O que acha?
olá, obrigado por estar aqui.
 
disponha
 
O que achou da ideia?
 
Depende do fluxo. O ideal seria se PELO MENOS houvesse uma tag do horario de criação
Assim você compara o horario e verifica
 
11:11 PM
Verdade pra que não houvesse todo esse trabalho desnecessário né?
 
mas nao o horario que voce recebeu o XML, mas quando o server salvou os dados
a imobiliaria poderia criar essa unica linha para você?
 
não estou entendendo o que está falando. desculpe-me.
 
A imobiliaria é quem serve o XML, veja se eles podem passar no XML o horario da atualização das informações
assim você compara a data entrada que recebeu com a que estiver no DB e saberá se houve atualização ou não de informações
 
Na verdade o web-service me fornece todos os dados já prontos. Ele serve várias imobiliárias, já é uma empresa grande que tem um sistema desktop que é alimentado e este web-service estoca as informações desse software.
Você acha que dentre as features do XML, possa haver uma que recupera a data de atualização do sistema?
 
Acabei de ver o campo "Data atualizacao"é ele que você vai usar
 
11:18 PM
Legal.
 
Estou com o XML, salvei ontem quando você deletou a pergunta
:)
 
Acho que deletei porque estava sendo criticado por ser iniciante !!! Consigo fazer MUITA coisa mas ainda tenho muita coisa pra aprender. As vezes o pessoal não tem paciência.
 
Eu estava com a resposta para você
 
Mas mesmo com esse campo eu preciso do cron certo? Pra disparar a verificação !!!
 
Comentei na outra questão: SimpleXMLElement resolve o problema
vamos por partes
 
11:21 PM
Todo ouvidos: ...
 
o CRON é para receber o XML correto?
 
ok, você vai receber o XML e usar o campo Data atualizacao para comparar com o DB, assim vai saber se houve atualização.
claro até aqui?
CRON e verificação de datas
 
ou seja: (cron + insert) ou (cron + update)
a ideia é simples e facil
 
11:23 PM
(cron + insert) ????
 
sim, caso o XML não esteja cadastrado
é que escrevi em uma linha as 2 operações
 
só que eu não uso CRON e não posso ajudar muito com ele, fico só na parte lógica
 
Estou entendendo direitinho o que está me passando. E quanto ao CDATA, colocando ele eu elimino qualquer possibilidade de acentuação, isoo????
 
ele vai tirar o erro d eum campo vazio, o acento é com utf8_decode
 
11:27 PM
E quanto aquele erro relacionado ao &(e comercial)? Foi por isso que coloquei o CDATA.
 
mas nao resolveu, continuou com a grafia trocada, utf8_decode corrige isso.
 
na verdade o XML nem estava sendo gerado, estava dando erro e foi por isso que usei CDATA
 
eu vi, foi por causa do valor NULL, é preciso trocar, eu trocaria por zero
 
precisaria trocar todos os campos vazios por 0?
 
sim, considere null como zero
 
11:33 PM
o primeiro campo vazio que ele encontrar então ele vai dar erro ?!?!?!?
 
isso.
 
e eu tenho como inserir null em tempo de execução em todos os campos vazios?
 
sim
array_walk( $array , function( &$value , $field ){
if( ! $value ) $value = '0';
});
tente esse codigo
vai retornar zero na linha que for null
 
Este é o começo do gerador do xml .. pastebin.com/S1WEUmEV ... aonde eu colocaria essa instrução?
 
Teste esse codigo abaixo:
// altera NULL para 0
array_walk( $array , function( &$value , $field ){
if( ! $value ) $value = '0';
});

// inverte a ordem KEY => VALUE
$array = array_flip( $array );

// cria o XML
$xml = new \SimpleXMLElement('<root/>');
array_walk_recursive($array, array( $xml , 'addChild' ) );

print_r( $xml->asXML() );
ele monta o XML como você quer, teste
rodou?
 
11:49 PM
não consegui porque não sei exatamente de que parte do código estamos falando.
 
porque não perguntou? estava esperando seu feedback
esse codigo cria o XML que voce precisa
 
de ontem pra hoje já mexi em tanto código que não sei o que vem antes ou depois do que está me mostrando.
 
somente este codigo é necessario para transformar o ARRAY em XML!
 
Está faltando algo antes ou depois disso. O que é?
 
$array é o seu array grandão de vários campos
"<?xml version="1.0"?>
<root><Data cadastro>2012-03-16</Data cadastro><Endereco>CASEMIRO DE ABREU</Endereco>..."
Funciona direitinho com o array
use este array como exemplo: $array = array('Data cadastro' => '2012-03-16','Endereco' => 'CASEMIRO DE ABREU','Bairro' => 'BELA VISTA');
ponha antes do codigo que passei e rode
 

  last day (16 days later) »