Igoh Bruno Postado Janeiro 18, 2013 Denunciar Share Postado Janeiro 18, 2013 (editado) Bom dia, esse script abaixo e o que calcula o frete dos correios, gostaria de saber como faço pra ele pegar os dados via GET ou seja ele pega os dados cadastrado no produto, como peso e medidas. No exemplo abaixo ele ta com valores fixo.Alguém pode mim dar uma ajuda.<?php$peso = "5.0";// Peso total do pacote em Quilos, caso seja menos de 1Kg, ex.: 300g, coloque 0.300define('PESO',2.00);define('EMBALAGEM',0.00);// Valor adicional no envio como custo de embalagem.define('COMPRIMENTO',20);define('ALTURA',15);define('LARGURA',20);if($_POST) {// Código do Serviço que deseja calcular, veja tabela acima:if ($_POST['servico']) {$cod_servico = $_POST['servico'];}// CEP de Origem, em geral o CEP da Loja$cep_origem = '58411-108';// CEP de Destino, você pode passar esse CEP por GET ou POST vindo de um formulário$cep_destino = $_POST['cep-destino'];$cep_destino = eregi_replace("([^0-9])","",$cep_destino);// URL de Consulta dos Correios$correios = "http://ws.correios.com.br/calculador/CalcPrecoPrazo.aspx?StrRetorno=xml&nCdServico={$cod_servico}&nVlPeso=" . PESO . "&sCepOrigem={$cep_origem}&sCepDestino={$cep_destino}&nCdFormato=1&nVlComprimento=" . COMPRIMENTO . "&nVlAltura=" . ALTURA . "&nVlLargura=" . LARGURA;// Capta as informações da página dos Correios$correios_info = file($correios);// Processa as informações vindas do site dos correios em um Arrayforeach($correios_info as $info) {// Busca a informação do Preço da Postagemif(preg_match("/\<Valor>(.*)\<\/Valor>/",$info,$tarifa)) {$total = $tarifa[1] + EMBALAGEM;}if(preg_match("/\<PrazoEntrega>(.*)\<\/PrazoEntrega>/",$info,$PrazoEntrega)) {$PrazoEntrega = $PrazoEntrega[1];}}// Neste exemplo estamos usando apenas PAC e SEDEX. Caso seja necessário, utilize outras opções.switch ($cod_servico) {case 41106:$nome_servico = " PAC ";break;case 40010:$nome_servico = " SEDEX ";break;}// Caso venha valor de resposta é numerio e maior que o custo da embalagem senão ocorreu algum erro na solicitação.if(is_numeric($total) and ($total > $embalagem)) {// Quando encontra o valor da postagem, exibe na página formatando em padrão de moeda 10,89// Caso você não queira formatar basta comentar a linha abaixo que será exibido assim 10.89 e basta executar o comando abaixo$total = number_format($total,2,',','.');echo $nome_servico . $total . ' prazo entrega de ' . $PrazoEntrega . ' dia(s) ';} else {echo 'Erro ao consultar verifique se CEP esta correto';}}?> Editado Janeiro 18, 2013 por Igoh Bruno Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 lucke Postado Janeiro 19, 2013 Denunciar Share Postado Janeiro 19, 2013 Olá!Fiz um tutorial explicando o uso de GET e POST aqui mesmo no fórum.Link: Tutorial: Usando GET e POSTEspero que te ajude.Flws! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Igoh Bruno
Bom dia, esse script abaixo e o que calcula o frete dos correios, gostaria de
saber como faço pra ele pegar os dados via GET ou seja ele pega os dados
cadastrado no produto, como peso e medidas. No exemplo abaixo ele ta com valores fixo.
Alguém pode mim dar uma ajuda.
<?php
$peso = "5.0";
// Peso total do pacote em Quilos, caso seja menos de 1Kg, ex.: 300g, coloque 0.300
define('PESO',2.00);
define('EMBALAGEM',0.00);
// Valor adicional no envio como custo de embalagem.
define('COMPRIMENTO',20);
define('ALTURA',15);
define('LARGURA',20);
if($_POST) {
// Código do Serviço que deseja calcular, veja tabela acima:
if ($_POST['servico']) {
$cod_servico = $_POST['servico'];
}
// CEP de Origem, em geral o CEP da Loja
$cep_origem = '58411-108';
// CEP de Destino, você pode passar esse CEP por GET ou POST vindo de um formulário
$cep_destino = $_POST['cep-destino'];
$cep_destino = eregi_replace("([^0-9])","",$cep_destino);
// URL de Consulta dos Correios
$correios = "http://ws.correios.com.br/calculador/CalcPrecoPrazo.aspx?StrRetorno=xml&nCdServico={$cod_servico}&nVlPeso=" . PESO . "&sCepOrigem={$cep_origem}&sCepDestino={$cep_destino}&nCdFormato=1&nVlComprimento=" . COMPRIMENTO . "&nVlAltura=" . ALTURA . "&nVlLargura=" . LARGURA;
// Capta as informações da página dos Correios
$correios_info = file($correios);
// Processa as informações vindas do site dos correios em um Array
foreach($correios_info as $info) {
// Busca a informação do Preço da Postagem
if(preg_match("/\<Valor>(.*)\<\/Valor>/",$info,$tarifa)) {
$total = $tarifa[1] + EMBALAGEM;
}
if(preg_match("/\<PrazoEntrega>(.*)\<\/PrazoEntrega>/",$info,$PrazoEntrega)) {
$PrazoEntrega = $PrazoEntrega[1];
}
}
// Neste exemplo estamos usando apenas PAC e SEDEX. Caso seja necessário, utilize outras opções.
switch ($cod_servico) {
case 41106:
$nome_servico = " PAC ";
break;
case 40010:
$nome_servico = " SEDEX ";
break;
}
// Caso venha valor de resposta é numerio e maior que o custo da embalagem senão ocorreu algum erro na solicitação.
if(is_numeric($total) and ($total > $embalagem)) {
// Quando encontra o valor da postagem, exibe na página formatando em padrão de moeda 10,89
// Caso você não queira formatar basta comentar a linha abaixo que será exibido assim 10.89 e basta executar o comando abaixo
$total = number_format($total,2,',','.');
echo $nome_servico . $total . ' prazo entrega de ' . $PrazoEntrega . ' dia(s) ';
} else {
echo 'Erro ao consultar verifique se CEP esta correto';
}
}
?>
Editado por Igoh BrunoLink para o comentário
Compartilhar em outros sites
1 resposta 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.