quattro Postado Agosto 30, 2011 Denunciar Share Postado Agosto 30, 2011 :blink: alguém poderia me ajudar com esse codigo, não consigo printar o valor na tela do carrinho, quando fecho os colchetes depois do "echo $resultado" da valor indefinido, se não fechar da o erro/////////////////////////////////////////////////////////////R$ 0,00 Total com frete R$ Notice: Undefined variable: frete inC:\xampp\htdocs\xampp\equattro\frete.phpon line 32Notice: Undefined variable: frete inC:\xampp\htdocs\xampp\equattro\frete.phpon line 33193,90//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////$cod_servico = 40010;$cep_origem = "05046000";$cep_destino = $_POST['cepDestino'];$peso = $_POST['peso'];$correios = "http://www.correios.com.br/encomendas/precos/calculo.cfm?servico=.$cod_servico."&cepOrigem=".$cep_origem."&cepDestino=".$cep_destino."&peso=".$peso."&MaoPropria=N&avisoRecebimento=N&resposta=xml";$correios_info = file($correios);foreach($correios_info as $info){ if(preg_match("/\<preco_postal>(.*)\<\/preco_postal>/",$info,$tarifa)){ $frete = $tarifa[1]; }}$troca_isso = array(',');$por_isso = array('.');$vlrSemFrete = str_replace($troca_isso,$por_isso,$_POST['semFrete]);$vlrComFrete = (number_format($vlrSemFrete+$frete,2,',','.'));$resultado = $vlrComFrete.'-'.number_format($frete,2,',','.');echo $resultado; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Agosto 30, 2011 Denunciar Share Postado Agosto 30, 2011 O erro informado diz que a variável não está definida, logo, o preg_match não está achando nada no retorno dos correios, verifique se está retornando algo e dentro do padrão de ER que você postou. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 quattro Postado Agosto 30, 2011 Autor Denunciar Share Postado Agosto 30, 2011 O erro informado diz que a variável não está definida, logo, o preg_match não está achando nada no retorno dos correios, verifique se está retornando algo e dentro do padrão de ER que você postou.desculpe minha ignoraca ESerra, não sou muito avançado em php, pode me fizer como posso fazer isso. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Agosto 30, 2011 Denunciar Share Postado Agosto 30, 2011 Troca:$correios = "http://www.correios.com.br/encomendas/precos/calculo.cfm?servico=".$cod_servico."&cepOrigem=".$cep_origem."&cepDestino=".$cep_destino."&peso=".$peso."&MaoPropria=N&avisoRecebimento=N&resposta=xml";Por:$correios = "http://www.correios.com.br/encomendas/precos/calculo.cfm?servico=".$cod_servico."&cepOrigem=".$cep_origem."&cepDestino=".$cep_destino."&peso=".$peso."&MaoPropria=N&avisoRecebimento=N&resposta=xml";echo $correios;Posta aqui o resultado. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 quattro Postado Setembro 1, 2011 Autor Denunciar Share Postado Setembro 1, 2011 Troca:$correios = "http://www.correios.com.br/encomendas/precos/calculo.cfm?servico=".$cod_servico."&cepOrigem=".$cep_origem."&cepDestino=".$cep_destino."&peso=".$peso."&MaoPropria=N&avisoRecebimento=N&resposta=xml";Por:$correios = "http://www.correios.com.br/encomendas/precos/calculo.cfm?servico=".$cod_servico."&cepOrigem=".$cep_origem."&cepDestino=".$cep_destino."&peso=".$peso."&MaoPropria=N&avisoRecebimento=N&resposta=xml";echo $correios;Posta aqui o resultado.http://ws.correios.com.br/encomendas/preço...mp;resposta=xml Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Setembro 1, 2011 Denunciar Share Postado Setembro 1, 2011 Se você tentar acessar o endereço que passou vai ver que ele nem é encontrado... ai está o problema.É provável que esta seja uma das URLs antigas, aqui você pode pegar o manual dos correios que tem os dados atuais do webservice. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 quattro Postado Setembro 1, 2011 Autor Denunciar Share Postado Setembro 1, 2011 Se você tentar acessar o endereço que passou vai ver que ele nem é encontrado... ai está o problema.É provável que esta seja uma das URLs antigas, aqui você pode pegar o manual dos correios que tem os dados atuais do webservice.na verdade a url tem que pegar os dados, estou tentando achar o erro no preg_match, pois as informações passam nas demais funções só que o calculo para ali...vou postar pra você ver...........................................................$correios_info = file($correios);foreach($correios_info as $info){if(preg_match("/\<preco_postal>(.*)\<\/preco_postal>/",$info,$tarifa)){$frete = $tarifa[1];}}.......................................................dei um echo na $correios e ele captou os dados via form..e parou ai na linha de cima Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Setembro 1, 2011 Denunciar Share Postado Setembro 1, 2011 A questão é que URL em que você está tentando pegar os dados está errada... se você pegar aquela linha da URL e colar no nevegador deveria ver um XML com os dados do frete e no lugar disto está retornando um XML. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 quattro Postado Setembro 1, 2011 Autor Denunciar Share Postado Setembro 1, 2011 A questão é que URL em que você está tentando pegar os dados está errada... se você pegar aquela linha da URL e colar no nevegador deveria ver um XML com os dados do frete e no lugar disto está retornando um XML.acho que ta cruzado a duvida...rs..veja/////capta as info via post do meu carrinho$cep_origem = "05046000";$cep_destino = $_POST[cepDestino];$peso = $_POST[peso];////passa pela url dos correios $correios = "http://ws.correios.com.br/calculador/CalcPrecoPrazo.aspx?&sCepOrigem=".$cep_origem."&sCepDestino=".$cep_destino."&nVlPeso=".$peso."&sCdMaoPropria=n&sCdAvisoRecebimento=n&nCdServico=40010&nVlDiametro=0&StrRetorno=xml ";////veja que ele pegou os dados//ws.correios.com.br/calculador/CalcPrecoPrazo.aspx?&sCepOrigem=05046000&sCepDestino=13348250&nVlPeso=3,00&sCdMaoPropria=n&sCdAvisoRecebimento=n&nCdServico=40010&nVlDiametro=0&StrRetorno=xml //////// o problema esta aqui ele não ta calculando para o retorno do meu arquivo$xml = file($correios);foreach($xml as $info){if(preg_match('/\ (.*)\<\/preco_postal>;/',$info,$tarifa)){$frete = number_format($tarifa[1],2,',','.');}}$troca_isso = array(',');$por_isso = array('.');$vlrSemFrete = str_replace($troca_isso,$por_isso,$_POST[semFrete]);$vlrComFrete = (number_format($vlrSemFrete+$frete,2,',','.'));$resultado = $vlrComFrete.'-'.number_format($frete,2,',','.');echo $resultado;//////então ele volta pro meu carrinho com a resposta em js///////////////// <script language="javascript" type="text/javascript"> $(document).ready(function(){ $('.buscaValorFrete').click(function(){ $('.vlrComFrete').html('<img src="images/spinner20.gif"/>'); $('.vlrFrete').html('<img src="images/spinner20.gif"/>'); if($('input[name=cep]').val() != ''){ var semofrete = "<?php echo $semfrete; ?>"; var peso_produtos = "<?php echo $totalpeso; ?>"; $.ajax({ url:'frete.php', cache:false, type:'POST', data:'cepDestino='+$('input[name=cep]').val()+'&peso='+peso_produtos+'&semFrete='+semofrete, success:function(data){ var v = data.split('-'); $('.vlrComFrete').html('R$ '+v[0]); $('.vlrFrete').html('R$ '+v[1]); } }); } }); }); </script>//////////o resultado que ele me da é193,00(vlrComFrete) - 00,00(vlrFrete)teria que ser por ex:203,00 (vlrComFrete) - 10,00 (vlrFrete)///////////////////////A questão é que URL em que você está tentando pegar os dados está errada... se você pegar aquela linha da URL e colar no nevegador deveria ver um XML com os dados do frete e no lugar disto está retornando um XML.acho que ta cruzado a duvida...rs..veja/////capta as info via post do meu carrinho$cep_origem = "05046000";$cep_destino = $_POST[cepDestino];$peso = $_POST[peso];////passa pela url dos correios $correios = "http://ws.correios.com.br/calculador/CalcPrecoPrazo.aspx?&sCepOrigem=".$cep_origem."&sCepDestino=".$cep_destino."&nVlPeso=".$peso."&sCdMaoPropria=n&sCdAvisoRecebimento=n&nCdServico=40010&nVlDiametro=0&StrRetorno=xml ";////veja que ele pegou os dados//ws.correios.com.br/calculador/CalcPrecoPrazo.aspx?&sCepOrigem=05046000&sCepDestino=13348250&nVlPeso=3,00&sCdMaoPropria=n&sCdAvisoRecebimento=n&nCdServico=40010&nVlDiametro=0&StrRetorno=xml //////// o problema esta aqui ele não ta calculando para o retorno do meu arquivo$xml = file($correios);foreach($xml as $info){if(preg_match('/\ (.*)\<\/preco_postal>;/',$info,$tarifa)){$frete = number_format($tarifa[1],2,',','.');}}$troca_isso = array(',');$por_isso = array('.');$vlrSemFrete = str_replace($troca_isso,$por_isso,$_POST[semFrete]);$vlrComFrete = (number_format($vlrSemFrete+$frete,2,',','.'));$resultado = $vlrComFrete.'-'.number_format($frete,2,',','.');echo $resultado;//////então ele volta pro meu carrinho com a resposta em js///////////////// <script language="javascript" type="text/javascript"> $(document).ready(function(){ $('.buscaValorFrete').click(function(){ $('.vlrComFrete').html('<img src="images/spinner20.gif"/>'); $('.vlrFrete').html('<img src="images/spinner20.gif"/>'); if($('input[name=cep]').val() != ''){ var semofrete = "<?php echo $semfrete; ?>"; var peso_produtos = "<?php echo $totalpeso; ?>"; $.ajax({ url:'frete.php', cache:false, type:'POST', data:'cepDestino='+$('input[name=cep]').val()+'&peso='+peso_produtos+'&semFrete='+semofrete, success:function(data){ var v = data.split('-'); $('.vlrComFrete').html('R$ '+v[0]); $('.vlrFrete').html('R$ '+v[1]); } }); } }); }); </script>//////////o resultado que ele me da é193,00(vlrComFrete) - 00,00(vlrFrete)teria que ser por ex:203,00 (vlrComFrete) - 10,00 (vlrFrete)/////////////////////// Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Setembro 1, 2011 Denunciar Share Postado Setembro 1, 2011 A sua expressão regular:if(preg_match('/\ (.*)\<\/preco_postal>;/',$info,$tarifa)){está procurando por preco_posta, mas o valor do frete está em Valor. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 quattro Postado Setembro 1, 2011 Autor Denunciar Share Postado Setembro 1, 2011 A sua expressão regular:if(preg_match('/\ (.*)\<\/preco_postal>;/',$info,$tarifa)){está procurando por preco_posta, mas o valor do frete está em Valor.seriaforeach($xml as $info){ if(preg_match('/\ (.*)\<\/valor>;/',$info,$tarifa)){ $frete = number_format($tarifa[1],2,',','.'); }}mas o print vem ainda assimR$ 0,00http://ws.correios.com.br/calculador/CalcPrecoPrazo.aspx?&sCepOrigem=05046000&sCepDestino=13348250&nVlPeso=3,00&sCdMaoPropria=n&sCdAvisoRecebimento=n&nCdServico=40010&StrRetorno=xml (*aparece porque dei um echo no $correios) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Setembro 1, 2011 Denunciar Share Postado Setembro 1, 2011 Olhei aqui e o retorno dos correios está informando: O comprimento não pode ser inferior a 18 cm.Você vai ter que informar as dimensões (largura, comprimento, altura) conforme consta no manual que passei lá em cima.EDIT: não sei se ainda função, mas postei no meu blog a alguma tempo atrás uma função que retornava o valor correto:http://www.edgarserra.com/15/funcao-para-c...-atualizado.jsp Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 quattro Postado Setembro 1, 2011 Autor Denunciar Share Postado Setembro 1, 2011 Olhei aqui e o retorno dos correios está informando: O comprimento não pode ser inferior a 18 cm.Você vai ter que informar as dimensões (largura, comprimento, altura) conforme consta no manual que passei lá em cima.EDIT: não sei se ainda função, mas postei no meu blog a alguma tempo atrás uma função que retornava o valor correto:http://www.edgarserra.com/15/funcao-para-c...-atualizado.jsptentei de outra forma, so não consigo concatenar o resultado xml com o php pra retornar pro carrinho////////////////////////PEGAMOS OS DADOS DE RETORNO XML COM O SIMPLEXML DO PHP $dados_correios = simplexml_load_file($URLcorreios);$total1 = $dados_correios->xpath('cServico/Valor');$total1 = floatval(str_replace(',', '.', $total1[0])); $total1 = $total1 + 2.00;$PrazoEntrega = $dados_correios->xpath('cServico/PrazoEntrega'); $erros = $dados_correios->xpath('cServico/Erro'); $ValorAvisoRecebimento = $dados_correios->xpath('cServico/ValorAvisoRecebimento'); // //IMPRIME A RESPOSTA COM O VALOR DO FRETE$resposta[valor] = number_format($total1, 2, ',', '.');$frete = $resposta[valor];$vlrSemFrete = $_POST['semFrete'];$vlrComFrete = (number_format($vlrSemFrete+$frete, 2,',','.'));$resultado = $vlrComFrete;echo $resultado;echo $correios;//////////////////da valor undefined no fretemas o total ele pega e ainda soma com o 2 que coloquei Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 quattro Postado Setembro 1, 2011 Autor Denunciar Share Postado Setembro 1, 2011 resolvido adaptei esse codhttp://andersongarcia.com/post/calculando-...rreios-com-php/e consegui resolver no meu carrinhovlw amigo por me ajudar...abçs :rolleyes: Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
quattro
:blink:
alguém poderia me ajudar com esse codigo, não consigo printar o valor na tela do carrinho, quando fecho os colchetes depois do "echo $resultado" da valor indefinido, se não fechar da o erro
/////////////////////////////////////////////////////////////
R$ 0,00 Total com frete R$
Notice: Undefined variable: frete inC:\xampp\htdocs\xampp\equattro\frete.phpon line 32
Notice: Undefined variable: frete inC:\xampp\htdocs\xampp\equattro\frete.phpon line 33
193,90
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
$cod_servico = 40010;
$cep_origem = "05046000";
$cep_destino = $_POST['cepDestino'];
$peso = $_POST['peso'];
$correios = "http://www.correios.com.br/encomendas/precos/calculo.cfm?servico=.$cod_servico."&cepOrigem=".$cep_origem."&cepDestino=".$cep_destino."&peso=".$peso."&MaoPropria=N&avisoRecebimento=N&resposta=xml";
$correios_info = file($correios);
foreach($correios_info as $info){
if(preg_match("/\<preco_postal>(.*)\<\/preco_postal>/",$info,$tarifa)){
$frete = $tarifa[1];
}
}
$troca_isso = array(',');
$por_isso = array('.');
$vlrSemFrete = str_replace($troca_isso,$por_isso,$_POST['semFrete]);
$vlrComFrete = (number_format($vlrSemFrete+$frete,2,',','.'));
$resultado = $vlrComFrete.'-'.number_format($frete,2,',','.');
echo $resultado;
Link para o comentário
Compartilhar em outros sites
13 respostass a esta questão
Posts Recomendados
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.