Ir para conteúdo
Fórum Script Brasil

Carlos Rocha

Membros
  • Total de itens

    1.300
  • Registro em

  • Última visita

Tudo que Carlos Rocha postou

  1. Bom, conseguimos, Para quem querr tai: Falta apenas implementar a gosto <?php ##################################### # Código dos Serviços dos Correios # # FRETE PAC = 41106 # # FRETE SEDEX = 40010 # # FRETE SEDEX 10 = 40215 # # FRETE SEDEX HOJE = 40290 # # FRETE E-SEDEX = 81019 # # FRETE MALOTE = 44105 # # FRETE NORMAL = 41017 # # SEDEX A COBRAR = 40045 # ##################################### $nCdEmpresa = ""; $sDsSenha = ""; $nCdServico = $_POST['TENVIO']; $sCepOrigem = 36855000; $sCepDestino = $_POST['TCEP']; $sCepDestino = eregi_replace("([^0-9])","",$sCepDestino); $nVlPeso = $peso_medio; $nCdFormato = 1; $nVlComprimento = 20; $nVlAltura = 20; $nVlLargura = 20; $nVlDiametro = 0; $sCdMaoPropria = "N"; $nVlValorDeclarado = 0; $sCdAvisoRecebimento = "S"; // URL de Consulta dos Correios entregue à variavel $correios $correios ="http://shopping.correios.com.br/wbm/shopping/script/CalcPrecoPrazo.aspx?" ."nCdEmpresa=$nCdEmpresa&" ."sDsSenha=$sDsSenha&" ."sCepOrigem=$sCepOrigem&" ."sCepDestino=$sCepDestino&" ."nVlPeso=$nVlPeso&" ."nCdFormato=$nCdFormato&" ."nVlComprimento=$nVlComprimento&" ."nVlAltura=$nVlAltura&" ."nVlLargura=$nVlLargura&" ."sCdMaoPropria=$sCdMaoPropria&" ."nVlValorDeclarado=$nVlValorDeclarado&" ."sCdAvisoRecebimento=$sCdAvisoRecebimento&" ."nCdServico=$nCdServico&" ."nVlDiametro=$nVlDiametro&" ."StrRetorno=xml"; $dados_correios = simplexml_load_file($correios); //print_r($dados_correios); print "<p>"; $total = $dados_correios->xpath('cServico/Valor'); $total = floatval(str_replace(',', '.', $total[0])); $PrazoEntrega = $dados_correios->xpath('cServico/PrazoEntrega'); $erros = $dados_correios->xpath('cServico/Erro'); $ValorAvisoRecebimento = $dados_correios->xpath('cServico/ValorAvisoRecebimento'); if ($erros[0] != 0) { print $erros[0]; // Tentar outro webservice } else { print "O valor do envio por "; print $nome_servico; print " será de: R$"; print number_format($total, 2, ',', '.'); print "<br>e o prazo de entrega será de "; print $PrazoEntrega[0]; print " dia(s) úteis"; print "<p>"; print "Valor da compra sem o frete R$ "; print number_format($preco_total, 2, ',', '.'); print "<p>"; $valor_final = $total + $preco_total; print "Valor da compra com o frete R$ "; print number_format($valor_final, 2, ',', '.'); } // Neste exemplo estou colocando apenas PAC e SEDEX switch ($nCdServico) { case 41106: $nome_servico = " PAC "; break; case 40010: $nome_servico = " SEDEX "; break; } ?>
  2. Olha, obrigado, era isso mesmo. Resolveu!
  3. Mesma coisa. Esta parando no alert para qualquer quantidade de digitos. Inclusive, tentei tirar a onkeiprees mas deu no mesmo.
  4. assim que chegar em casa vou testar, mas impressionante é que tem outras validações nesse mesmo form e essas funcionam.
  5. <? if ($acao=="qual_cep") { ?> <FORM METHOD="POST" ACTION="CarrinhoFinal.php?acao=RECEBE_CEP_SERVICO" name="FORM_ENVIA_CEP_SERVICO"> <TABLE width="400" align="center"> <TR><TD colspan="2" align="center">Não sabe o CEP?<BR />Clique <a href="http://www.buscacep.correios.com.br/servicos/dnec/index.do" target="_blank">aqui</a></TR> <TR> <!-- Fazer uma funçao em ajax ou JavaScript para verificar se o peso for superior a 30kg só aceitar encomenda pela trasnportadora. Lembrar de colocar mascara e só aceitar digitação de numeros no cep--> <TD>Informe o CEP para entrega do pedido:</TD> <TD><INPUT TYPE="text" NAME="TCEP" onkeypress="return mascara(event,this,'##.###-###');" size="10" maxlength="10"></TD> </TR> <TR> <TD>FORMA DE ENVIO:</TD> <TD> <select name="TENVIO"> <option value="40010" selected>SEDEX</option> <option value="41106">PAC</option> </select> </TD> </TR> <TR align="center"> <TD colspan="2"><input type="button" value="Enviar Dados" name="envio_cep_frete" WIDTH="78" HEIGHT="20" style="background-color: rgb(0,111,55); color: rgb(255,255,0)" onClick="CriticaFormulario2()"></TD> </TR> </TABLE> <? } ?>
  6. É, to cum, outro problema aqui cavernoso: if (document.FORM_ENVIA_CEP_SERVICO.TCEP.length != 10) {alert("CEP TEM QUE TER 8 DIGITOS!!!");document.FORM_ENVIA_CEP_SERVICO.TCEP.focus(); return (false);} document.FORM_ENVIA_CEP_SERVICO.submit(); É um cep com mascara Porem o codigo acima esta lendo extamente o contrario: se tem 10 (8 numeros + a mascara .-) ele bloqueia e se o lengh vier diferente de 10 ele libera. Onde esta o erro? function mascara(e,src,mask) { if(window.event) { _TXT = e.keyCode; } else if(e.which) { _TXT = e.which; } if(_TXT > 47 && _TXT < 58) { var i = src.value.length; var saida = mask.substring(0,1); var texto = mask.substring(i) if (texto.substring(0,1) != saida) { src.value += texto.substring(0,1); } return true; } else { if (_TXT != 8) { return false; } else { return true; } } }
  7. Pois é não é?? Por isso que eu digo: 2 cabeças pensam mehor que uma! Obrigado! Tinha me esquicido disso. Cabeça quente com php! hehehe
  8. ta certo mas queria bloquear quando o cara acabar de digitar o 8° digito do cep e não pedmitir mais (ou seja bloquear o teclado)
  9. pessoal, estou precisando de uma força: Tenh a função abaixo que faz exatamente o que eu preciso que é aceitar apenas numeros alem de mascarar. Porem, gostaria de implementar duas coisas nela: 1) só pode 8 numeros, nem mais, nem menos.; Para CEP entende? 2) Se tiver menos, não enviar o form. como fazer isso? function mascara(e,src,mask) { if(window.event) { _TXT = e.keyCode; } else if(e.which) { _TXT = e.which; } if(_TXT > 47 && _TXT < 58) { var i = src.value.length; var saida = mask.substring(0,1); var texto = mask.substring(i) if (texto.substring(0,1) != saida) { src.value += texto.substring(0,1); } return true; } else { if (_TXT != 8) { return false; } else { return true; } } } Obrigado a quem pude ajudar
  10. Consegui assim: // URL de Consulta dos Correios entregue à variavel $correios $correios ="http://shopping.correios.com.br/wbm/shopping/script/CalcPrecoPrazo.aspx?" ."nCdEmpresa=$nCdEmpresa&" ."sDsSenha=$sDsSenha&" ."sCepOrigem=$sCepOrigem&" ."sCepDestino=$sCepDestino&" ."nVlPeso=$nVlPeso&" ."nCdFormato=$nCdFormato&" ."nVlComprimento=$nVlComprimento&" ."nVlAltura=$nVlAltura&" ."nVlLargura=$nVlLargura&" ."sCdMaoPropria=$sCdMaoPropria&" ."nVlValorDeclarado=$nVlValorDeclarado&" ."sCdAvisoRecebimento=$sCdAvisoRecebimento&" ."nCdServico=$nCdServico&" ."nVlDiametro=$nVlDiametro&" ."StrRetorno=xml"; Isso ai fechou mas o lance de pegar os endereços na resposta dos correios? Voce manja? Tipo nessa parte, fazer se o erro vier imprimir o erro e parar, mas, se não vier erro, prosseguir. foreach($correios_info as $info) { // Busca a informação do Preço da Postagem ////////////////////////////////////////////////////////////////////////////////////////// /// GUARDAR EM SESSÃO OS RETORNOS PARA EVITAR QUE UM ENTER PERCA OS DADOS ENVIADOS//////// ////////////////////////////////////////////////////////////////////////////////////////// if(preg_match("/\<MsgErro>(.*)\<\/MsgErro>/",$info,$Erro)) { print $Erro[1]; } if(preg_match("/\<Valor>(.*)\<\/Valor>/",$info,$tarifa)) { $total = floatval(str_replace(',', '.', $tarifa[1])); } if(preg_match("/\<PrazoEntrega>(.*)\<\/PrazoEntrega>/",$info,$PrazoEntrega)) { $PrazoEntrega = $PrazoEntrega[1]; } } Eu fiz assim, mas quando não da erro, ele segue mas não envia o valor do frete: foreach($correios_info as $info) { // Busca a informação do Preço da Postagem ////////////////////////////////////////////////////////////////////////////////////////// /// GUARDAR EM SESSÃO OS RETORNOS PARA EVITAR QUE UM ENTER PERCA OS DADOS ENVIADOS//////// ////////////////////////////////////////////////////////////////////////////////////////// if(preg_match("/\<MsgErro>(.*)\<\/MsgErro>/",$info,$Erro) == 0) { print $Erro[1]; exit; } else { if(preg_match("/\<Valor>(.*)\<\/Valor>/",$info,$tarifa)) { $total = floatval(str_replace(',', '.', $tarifa[1])); } if(preg_match("/\<PrazoEntrega>(.*)\<\/PrazoEntrega>/",$info,$PrazoEntrega)) { $PrazoEntrega = $PrazoEntrega[1]; } } }
  11. Só que eu que queria pegar todos os retornos tipo endereço, UF, cepDestino, tarifa, do rerorno que o correio nos envia. E tambem fazer assim: Se der erro, redireciona para outra pagina, se não der erro, prossegue os calculos. Outra coisa é a seginte: Esse url ficou muito tumultuada. Como eu faria para organizala em linhas? tipo: linhas 1 url + ?, linha parametro 1 + &, linha parametro 2 + &, assim pos diante Na verdade, eu queria a url assim: $correios = "http://shopping.correios.com.br/wbm/shopping/script/CalcPrecoPrazo.aspx? StrRetorno=xml& nCdEmpresa=$nCdEmpresa& sDsSenha=$sDsSenha& nCdServico=$nCdServico& sCepOrigem=$sCepOrigem& sCepDestino=$sCepDestino& nVlPeso=$nVlPeso& nCdFormato=$nCdFormato& nVlComprimento=$nVlComprimento& nVlAltura=$nVlAltura& nVlLargura=$nVlLargura& nVlDiametro=$nVlDiametro& sCdMaoPropria=$sCdMaoPropria& nVlValorDeclarado=$nVlValorDeclarado& sCdAvisoRecebimento=$sCdAvisoRecebimento "; O que falta de concatenação para funcionar assim?
  12. Sabe, consegui dar uma enxugada boa no codigo, inclusive, ele retorna exatamente os mesmos valores do site dos correios. Agora, preciso de ajuda para filtrar prelos erros de cep inserido errado, falha no site dos correios. Nesse caso, redirecionar para outra pagina. Qual o código devo usar para achar esses erros? Tambem preciso achar a cidade, estado, endereço do cep de destino escolhido pelo internauta a partir da resposta dos correios. Como fazer isso? Segue o codigo enxuto: <?php ##################################### # Código dos Serviços dos Correios # # FRETE PAC = 41106 # # FRETE SEDEX = 40010 # # FRETE SEDEX 10 = 40215 # # FRETE SEDEX HOJE = 40290 # # FRETE E-SEDEX = 81019 # # FRETE MALOTE = 44105 # # FRETE NORMAL = 41017 # # SEDEX A COBRAR = 40045 # ##################################### $nCdEmpresa = ""; $sDsSenha = ""; $nCdServico = $_POST['TENVIO']; $sCepOrigem = 36855000; $sCepDestino = $_POST['TCEP']; $sCepDestino = eregi_replace("([^0-9])","",$sCepDestino); $nVlPeso = $peso_medio; $nCdFormato = 1; $nVlComprimento = 20; $nVlAltura = 20; $nVlLargura = 20; $nVlDiametro = 0; $sCdMaoPropria = "S"; $nVlValorDeclarado = 0; $sCdAvisoRecebimento = "N"; // URL de Consulta dos Correios $correios = "http://shopping.correios.com.br/wbm/shopping/script/CalcPrecoPrazo.aspx?StrRetorno=xml&nCdEmpresa=$nCdEmpresa&sDsSenha=$sDsSenha&nCdServico=$nCdServico&sCepOrigem=$sCepOrigem&sCepDestino=$sCepDestino&nVlPeso=$nVlPeso&nCdFormato=$nCdFormato&nVlComprimento=$nVlComprimento&nVlAltura=$nVlAltura&nVlLargura=$nVlLargura&nVlDiametro=$nVlDiametro&sCdMaoPropria=$sCdMaoPropria&nVlValorDeclarado=$nVlValorDeclarado&sCdAvisoRecebimento=$sCdAvisoRecebimento"; // 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 $line_num => $line) { echo "Linha #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br>\n"; } */ foreach($correios_info as $info) { // Busca a informação do Preço da Postagem ////////////////////////////////////////////////////////////////////////////////////////// /// GUARDAR EM SESSÃO OS RETORNOS PARA EVITAR QUE UM ENTER PERCA OS DADOS ENVIADOS//////// ////////////////////////////////////////////////////////////////////////////////////////// if(preg_match("/\<MsgErro>(.*)\<\/MsgErro>/",$info,$Erro)) { print $Erro[1]; } if(preg_match("/\<Valor>(.*)\<\/Valor>/",$info,$tarifa)) { $total = floatval(str_replace(',', '.', $tarifa[1])); } if(preg_match("/\<PrazoEntrega>(.*)\<\/PrazoEntrega>/",$info,$PrazoEntrega)) { $PrazoEntrega = $PrazoEntrega[1]; } } // Neste exemplo estou colocando apenas PAC e SEDEX switch ($nCdServico) { case 41106: $nome_servico = " PAC "; break; case 40010: $nome_servico = " SEDEX "; break; } ?>
  13. Ola amigos, estou aqui sofrendo para entender a dinamica de uma loja virtual e agora tem 3 duvidas que preciso tirar antes de prosseuir meu trabalho e gostaria de poder contar a ajuda de voces. 1) Peguei um script de calculo de frete (com a URL dos correios) que me retorna valores bem proximos aos do correios. Segue código: <?php /** * Executa calculo do frete usando webservice dos correios. * @copyright Phaneronsoft * @author Marcelo Korjenioski - faleconosco@phaneronsoft.com * @see http://www.phaneronsoft.com * @filesource correios.php * @version 1.1 */ ##################################### # Código dos Serviços dos Correios # # FRETE PAC = 41106 # # FRETE SEDEX = 40010 # # FRETE SEDEX 10 = 40215 # # FRETE SEDEX HOJE = 40290 # # FRETE E-SEDEX = 81019 # # FRETE MALOTE = 44105 # # FRETE NORMAL = 41017 # # SEDEX A COBRAR = 40045 # ##################################### // Definindo constantes // 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 = '36855000'; // 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://shopping.correios.com.br/wbm/shopping/script/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 estou colocando apenas PAC e SEDEX 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'; } } else { ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> <link href="http://demo.phaneronsoft.com/img/favicon.ico" rel="shortcut icon" type="image/x-icon" /> <title>Sistema para Calcular Frete SEDEX e PAC a partir de CEP informado. | Phaneronsoft</title> <style type="text/css"> * { font-family:"Trebuchet MS","Lucida Grande",Verdana,Tahoma,Helvetica,Arial,sans-serif; font-size:12px; font-style:normal; font-variant:normal; font-weight:normal; line-height:normal; } body { background:#FFFFFF none repeat scroll 0 0; height:100%; margin:0; margin-top:20px; width:100%; } div#wrapper { margin:auto; position:relative; width:450px; z-index:0; } .formMain .select { text-transform:uppercase; width:99%; border:1px solid #B6B6B6; display:block; } .formSearch fieldset { border:1px solid #CCCCCC; margin:0; padding:0 10px; } .formMain label { display:block; float:left; margin-right:4px; padding-bottom:5px !important; } .formMain legend { color:#1E398D; font-family:"Legacy Sans ITC TT Bold","Trebuchet MS","Lucida Grande",Verdana,Tahoma,Helvetica,Arial,sans-serif; font-size:1.5em; padding:10px 5px; } .formMain .button { background:#F5EED3; border:1px solid #CCCCCC; color:#666666; cursor:pointer; font-size:12px; font-weight:bold; letter-spacing:1px; margin:10px 0 0; overflow:visible; text-transform:uppercase; width:100%; } .formMain .inline { margin:15px 0 0 !important; } .formMain .text, .formMain .select, .formMain .textarea, .formMain .password { border:1px solid #B6B6B6; display:block; text-transform:uppercase; } .formMain fieldset span.nameField { color:#666666; text-transform:uppercase; } h3 { border-bottom:1px solid #F58220; margin:0; padding:0; } h3 span { -x-system-font:none; color:#1E398D; font-family:"Legacy Sans ITC TT Bold","Trebuchet MS","Lucida Grande",Verdana,Tahoma,Helvetica,Arial,sans-serif; font-size:1.5em; font-style:normal; font-variant:normal; font-weight:bold; line-height:normal; } #value { -x-system-font:none; color:#9B0000; font-family:"Legacy Sans ITC TT Bold","Trebuchet MS","Lucida Grande",Verdana,Tahoma,Helvetica,Arial,sans-serif; font-size:1.5em; font-style:normal; font-variant:normal; font-weight:bold; line-height:normal; } </style> </head> <body> <div id="wrapper"> <h3> <span>Pesquisa valor de frete</span> </h3> <form id="form-pesquisa-repasse" action="" method="post" class="formMain formSearch wsizep100" onsubmit="submitForm(this); return false;"> <fieldset> <legend>Filtrar Referência</legend> <label for="servico" class="wsize015"> <span class="nameField">Envio</span> <select id="servico" name="servico" title="Serviços dos Correios" class="select" tabindex="1"> <option value="41106">PAC</option> <option value="40010">SEDEX</option> </select> </label> <label class="wsize010" for="cep-destino"> <span class="nameField">CEP Destino</span> <input id="cep-destino" class="text" type="text" value="" maxlength="9" title="CPF destino" name="cep-destino" tabindex="2"/> </label> <label for="pesquisar" class="wsize010"> <input type="submit" id="pesquisar" name="pesquisar" tabindex="3" class="button inline" value="Pesquisar" /> </label> </fieldset> </form> <span>* Digitar somente número no CEP</span> <br /> <span id="value"></span> </div> <script src="http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.3/prototype.js" type="text/javascript"></script> <script type="text/javascript"> function submitForm(form) { /* usa método request() da classe Form da prototype, que serializa os campos do formulário e submete (por POST como default) para a action especificada no form */ form.request({ onComplete: function(transport){ /* se o retorno for diferente de -1, entende-se que não houve problemas, então apaga-se os campos do formulário usando o método reset() da classe Form */ if(transport.responseText !=-1) { $('value').innerHTML = transport.responseText; } else { form.reset(); $('value').innerHTML = 'Erro ao consultar'; } } }); return false; } </script> </body> </html> <?php } // fim else ?> 2)No caso do site dos correios falhar, o que é certo fazer? Verificar o erro com um IF e se houver erro, tentar um outro webservice? Pergunto isso pois não posso impedir que o internauta deixe de efetuar a compra por causa dos correios não retornarem o valor do frete né? Nesse casom o que fazer? 3) No calculo do PAC, é necessario enviar as dimensões da embalagem que vai levar a encomenda até a casa do comprador bem como o peso. Não é pedido o volume do pacote e sim as dimensões. A) Essas dimensões precisam de ser enviadas mesmo que a embalagem não seja comprada la nos correios? B) Quanto às medidas,. deixa eu ver se entendi: No form de cadastro de produtos acrescenta mais 3 campos, (comprimento,altura e largura) para o cliente digitar (ambiente administratio - cadastro de produto da loja virtual) as medidas de cada produto. Depois, criar um contador de medidas (do jeito que fiz com o peso) para calcular as dimensões provaveis para a embalagem! É isso? Se for, será que encontro um codigo desses ai pronto? Então, me ajuda fazer essa conta: O site que eu administro, vende produtos pequenos de perfumaria e cuidados com a pele (sabonete, shampoo, antimofo) No caso de um sabonete (medidas de cada sabonete) 5cm de comprimento 2cm de largura 1cm de altura No caso de um shampoo (medidas de cada shampoo) 20cm de comprimento 4cm de largura 2cm de altura Dai um cliente no site faz uma compra assim: 20 sabonetes e 10 shampoos. A conta para desobrir as dimensões da embalagem de envio seria como? Como fazer esse calculo? Voces me explicando isso ai o resto da pra eu me virar!
  14. Carlos Rocha

    Sinistro

    Entendi. É, realmente só esta funcionando para sedex mesmo! Mas o que me intriga é porque a função só não esta aceitando o valor que vem do <select> la do form. Do campo de texto e , inclusive, de uma variavel de sessão ele esta aceitando. Para tirar a duvida, mandei o php imprimir o valor do <select> fora da função e da certin. Mas, você pode me informar algum link onde alguém explica isso? Pergunto pois, nesse modelo dos correios não há modelo em php. Obrigando!
  15. Carlos Rocha

    Sinistro

    Observe a função: $result = calcula_frete($TENVIO, $TCEP, '36855000', '2'); Eu quero dizer que a variavel $TCEP (que vem através de um campo de texto do formulario, por post ) chega normalmente dentro da função mas a variavel $TENVIO , que vem do mesmo formulario só que esse campo é um <select> e NÃO é um campo de texto. O valor do select (TENVIO) não chega dentro da função como o TCEP. Entendeu? Mas, se eu colocar pra imprimir antes ou depois da função (só pra ver se o valor do aelect ta chegando), la esta o valor imprimido certinho (pode se com echo, print não importa pois dentro da funçao não colocamos print ou post, apenas $TENVIO).
  16. Carlos Rocha

    Sinistro

    Ola amigos. Estou com um problema que esta me intrigando. É o seguinte: Tenho o seguinte form: <FORM METHOD="POST" ACTION="CarrinhoFinal.php?acao=envia_dados" name="FORM_ENVIA_CEP"> <TABLE width="400" align="center"> <TR> <TD>Informe o CEP para entrega do pedido:</TD> <TD><INPUT TYPE="text" NAME="TCEP"></TD> </TR> <TR> <TD>FORMA DE ENVIO:</TD> <TD> <select name="TENVIO"> <option value="FRETE_SEDEX" selected>SEDEX</option> <option value="FRETE_PAC">PAC</option> </select> </TD> </TR> <TR align="center"> <TD colspan="2"><input type="submit" value="Enviar Dados" name="envio_cep_frete" WIDTH="78" HEIGHT="20" style="background-color: rgb(0,111,55); color: rgb(255,255,0)" onClick="CriticaFormulario2()"></TD> </TR> </TABLE> Esse form envia dois campos para o action dele: 1) TCEP --> TEXTBOX 2) TENVIO --> SELECT Acontece que os valores da textbox e do select chegam normal, da até pra imprimir. O problema é que não consigo imprimir a variavel $TENVIO dentro de uma funçao. Deixa explicar. Veja: <? if ($acao=="envia_dados") { include ("frete.php"); $print $TENVIO; // $result = calcula_frete(FRETE_SEDEX, $TCEP, '36855000', '2'); $result = calcula_frete($TENVIO, $TCEP, '36855000', '2'); $print $TENVIO; ?> Viram? Imprime antes e depois da função (para teste tá?) Mas dentro da funçao não vai de jeito nenhum. Onde estará o erro? Segue a função: <?php define('FRETE_PAC', '41106'); define('FRETE_SEDEX', '40010'); define('FRETE_SEDEX_10', '40215'); define('FRETE_SEDEX_HOJE', '40290'); define('FRETE_E_SEDEX', '81019'); define('FRETE_MALOTE', '44105'); function calcula_frete ($servico, $origem, $destino, $peso) { if (!$sock = fsockopen('www.correios.com.br', 80, $errornro, $error, 60)) { throw new Exception($error, $errornro); } $msg = "GET /encomendas/precos/calculo.cfm?" ."Servico={$servico}&cepOrigem={$origem}&cepDestino={$destino}" ."&peso={$peso}&resposta=localhost HTTP/1.1\n" ."Host: www.correios.com.br\nConnection: Close\n\n"; fwrite($sock, $msg); while (!feof($sock)) { $line = fgets($sock); if (!preg_match('/^Location: \w+\?(.*)$/i',$line, $match)) continue; $data = array(); foreach(split('&', $match[1]) as $item) { $t = split('=', $item); $data[$t[0]] = trim($t[1]); } break; } $data['Servico'] = urldecode($data['Servico']); $data['erro'] = urldecode($data['erro']); return $data; } ?> Obrigado a quem puder ajudar!
  17. Ola pessoal. Estou precisando de uma orientaçao. Peguei um codigo para me retornar valor de frete dos correios que vou postar no final dessw tópico. Meu problema é o seguinte: Tenho uma lojinha virtual beeeeeeeeeeeeem simples e gostaria de implementar calculo altomatico do frete. Quando cliente temina o carrinho e vai para a pagina de identifricação, é mostrado para ele um formulario (após a identificação usuario/senha é claro). Nesse formulario é apresentado ao cliente o valor da compra, e pede o cep para onde será enviado a compra. Nessew mesmo formulaio, tem um campo para o cliente escolher como quer que enviemos a emcomenda (PAC, SEDEX, SEDEX10) o que eu quero? Na hora que o cliente validar o usuario e senha, já apareça o calculo do frete por padrão SEDEX numa label. Detalhe, quando abre esse formulario, já traz nos campos do form os dados do cliente de seu cadastro (endereço, bairro, cep..) caso ele queira alterar o enderço de entrega ele o fará sem problemas. Mas, se ele trocar o cep da encomenda ou o tipo de frete (PAC, SEDEX, SEDEX10), ai a função calcula frete devera ser chamada e entregar o valor para a label. Bom, como faz isso: Aqui esta o código que achei sobre o sedex: <?php define('FRETE_PAC', '41106'); define('FRETE_SEDEX', '40010'); define('FRETE_SEDEX_10', '40215'); define('FRETE_SEDEX_HOJE', '40290'); define('FRETE_E_SEDEX', '81019'); define('FRETE_MALOTE', '44105'); function calcula_frete ($servico, $origem, $destino, $peso) { if (!$sock = fsockopen('www.correios.com.br', 80, $errornro, $error, 60)) { throw new Exception($error, $errornro); } $msg = "GET /encomendas/precos/calculo.cfm?" ."Servico={$servico}&cepOrigem={$origem}&cepDestino={$destino}" ."&peso={$peso}&resposta=localhost HTTP/1.1\n" ."Host: www.correios.com.br\nConnection: Close\n\n"; fwrite($sock, $msg); while (!feof($sock)) { $line = fgets($sock); if (!preg_match('/^Location: \w+\?(.*)$/i',$line, $match)) continue; $data = array(); foreach(split('&', $match[1]) as $item) { $t = split('=', $item); $data[$t[0]] = trim($t[1]); } break; } $data['Servico'] = urldecode($data['Servico']); $data['erro'] = urldecode($data['erro']); return $data; } $result = calcula_frete(FRETE_SEDEX, '20512170', '78053378', '2'); var_dump($result); ?> Agradeço a quem puder ajudar
  18. Carlos Rocha

    Calculo de frete

    Ola pessoal. Estou precisando de uma orientaçao. Peguei um codigo para me retornar valor de frete dos correios que vou postar no final dessw tópico. Meu problema é o seguinte: Tenho uma lojinha virtual beeeeeeeeeeeeem simples e gostaria de implementar calculo altomatico do frete. Quando cliente temina o carrinho e vai para a pagina de identifricação, é mostrado para ele um formulario (após a identificação usuario/senha é claro). Nesse formulario é apresentado ao cliente o valor da compra, e pede o cep para onde será enviado a compra. Nessew mesmo formulaio, tem um campo para o cliente escolher como quer que enviemos a emcomenda (PAC, SEDEX, SEDEX10) o que eu quero? Na hora que o cliente validar o usuario e senha, já apareça o calculo do frete por padrão SEDEX numa label. Detalhe, quando abre esse formulario, já traz nos campos do form os dados do cliente de seu cadastro (endereço, bairro, cep..) caso ele queira alterar o enderço de entrega ele o fará sem problemas. Mas, se ele trocar o cep da encomenda ou o tipo de frete (PAC, SEDEX, SEDEX10), ai a função calcula frete devera ser chamada e entregar o valor para a label. Bom, como faz isso: Aqui esta o código que achei sobre o sedex: <?php define('FRETE_PAC', '41106'); define('FRETE_SEDEX', '40010'); define('FRETE_SEDEX_10', '40215'); define('FRETE_SEDEX_HOJE', '40290'); define('FRETE_E_SEDEX', '81019'); define('FRETE_MALOTE', '44105'); function calcula_frete ($servico, $origem, $destino, $peso) { if (!$sock = fsockopen('www.correios.com.br', 80, $errornro, $error, 60)) { throw new Exception($error, $errornro); } $msg = "GET /encomendas/precos/calculo.cfm?" ."Servico={$servico}&cepOrigem={$origem}&cepDestino={$destino}" ."&peso={$peso}&resposta=localhost HTTP/1.1\n" ."Host: www.correios.com.br\nConnection: Close\n\n"; fwrite($sock, $msg); while (!feof($sock)) { $line = fgets($sock); if (!preg_match('/^Location: \w+\?(.*)$/i',$line, $match)) continue; $data = array(); foreach(split('&', $match[1]) as $item) { $t = split('=', $item); $data[$t[0]] = trim($t[1]); } break; } $data['Servico'] = urldecode($data['Servico']); $data['erro'] = urldecode($data['erro']); return $data; } $result = calcula_frete(FRETE_SEDEX, '20512170', '78053378', '2'); var_dump($result); ?> Agradeço a quem puder ajudar
  19. nesse caso eu prescisaria mudar toda a estrutura da loja virtual
  20. pois é, masa ai não tem como saber se o select irá me rerornar exatamente o campo (valor) referente a essa gravação feita
  21. Só uma falta de atenção minha: O campo NÃO é auto incremente. Nesse caso, como fazer pra retrornar o valor gravado de um determinado campo para aquela gravação.
  22. Cara, fiz assim tambem e retornou 0 (zero) como valor. for($i=0;$i<$MeuCarrinho->QuantosItens();$i++) { $data = date('Y-m-d'); $MySQL->query("INSERT INTO pedidos (ID_PEDIDO, ID_PRODUTO, QUANTIDADE,Envio, data, atende) VALUES (". $CODIGO_PEDIDO .",". $MeuCarrinho->item_codigo[$i] .",". $MeuCarrinho->item_quantidade[$i] .",'". $HTTP_POST_VARS["TENVIO"] ."','$data','n')"); $MeuCarrinho->ultimo_id =mysql_insert_id(); } Onde estou errando
  23. Ok no caso ficaria assim: for($i=0;$i<$MeuCarrinho->QuantosItens();$i++) { $data = date('Y-m-d'); $MySQL->query("INSERT INTO pedidos (ID_PEDIDO, ID_PRODUTO, QUANTIDADE,Envio, data, atende) VALUES (". $CODIGO_PEDIDO .",". $MeuCarrinho->item_codigo[$i] .",". $MeuCarrinho->item_quantidade[$i] .",'". $HTTP_POST_VARS["TENVIO"] ."','$data','n')"); $ultimo_id=mysql_insert_id(); } isso! Agora, e pra pegar esse valor mais pra frente sendo que (eu acho) não esta na mesma sessão Como fazer
  24. Ola pessoal, estou precisando de uma orientação. No site do meu cliente www.naturelavie.com.br, tem uma lojinha virtual. Coisa simples mesmo. Agora o cliente me pediu para colar cobrança por cartão, boleto, deposito. Calculo de frete e muito mais. Bom, agora estou na seguinte parte. Gravei o pedido do internauta no mysql assim: for($i=0;$i<$MeuCarrinho->QuantosItens();$i++) { $data = date('Y-m-d'); $MySQL->query("INSERT INTO pedidos (ID_PEDIDO, ID_PRODUTO, QUANTIDADE,Envio, data, atende) VALUES (". $CODIGO_PEDIDO .",". $MeuCarrinho->item_codigo[$i] .",". $MeuCarrinho->item_quantidade[$i] .",'". $HTTP_POST_VARS["TENVIO"] ."','$data','n')"); } Bom, isso gera na minha tabela (com id autoincrement) um numero de pedido. Preciso saber qual foi esse numero de pedido pois quando for enviar os dados para administradora de cartões será preciso informar o numero do pedido. Como faço para, dentro da mesma seçao, recuperar o numero do pedido
×
×
  • Criar Novo...