regina 0 Denunciar post Postado Fevereiro 10, 2012 Bom dia, estou tentando incluir o cálculo de frete a um carrinho de compras e preciso que o valor do frete seja somado ao subtotal do carrinho. Encontrei a seguinte função para calcular o frete e esta funciona perfeitamente function calculaFrete($cod_servico, $cep_origem, $cep_destino, $peso, $altura='2', $largura='11', $comprimento='16', $valor_declarado='0.50'){ $correios = "http://ws.correios.com.br/calculador/CalcPrecoPrazo.aspx?nCdEmpresa=&sDsSenha=&sCepOrigem=".$cep_origem."&sCepDestino=".$cep_destino."&nVlPeso=".$peso."&nCdFormato=1&nVlComprimento=".$comprimento."&nVlAltura=".$altura."&nVlLargura=".$largura."&sCdMaoPropria=n&nVlValorDeclarado=".$valor_declarado."&sCdAvisoRecebimento=n&nCdServico=".$cod_servico."&nVlDiametro=0&StrRetorno=xml"; $xml = simplexml_load_file($correios); if($xml->cServico->Erro == '0') return $xml->cServico->Valor; else return false; }#function frete No carrinho eu tenho um input para o cliente digitar o seu CEP, aqui começa minha dificuldade, como passar este dado, para adicionar ou remover um item eu uso um link normal <a href='arquivo_processa_carrinho.php?soma=codigo_item'>Adicionar</a> No input como devo fazer? Tentei da seguinte forma print '<tr id="trtotal"> <td colspan="5" class="cep"><fieldset> <label for="cep">CEP:<input type="text" class="diversos" id="cep" name="cep" onkeyup="javascritp:if(this.value.length == 9) ColocaFocus(\'CalcularFreteBt\', event);" onkeypress="SomenteNumero2(event,this,\'#####-###\');" maxlength="9" /></label> <a href="processa.php?cep=document.getElementById("cep").value\" class="btCalcular"><img title="Calcular" name="CalcularFreteBt" id="CalcularFreteBt" src="http://www.etna.com.br/Imagens/bt_calcular.gif"/></a> <input type="submit" style="display:none;" id="CalcularFreteBt2" value="" name="CalcularFreteBt2"/></fieldset></td> <td> <label>Frete:</label> <td class="tdsubtotal">R$ '.number_format($_SESSION["frete"],2,',','.').'</td> </tr>'; Eu pego minha sessão no carrinho assim: foreach($_SESSION as $campo => $quantidade) { uso assim para remover uma unidade if(isset($_GET['rem'])) { $_SESSION['produto_'.$_GET['rem']]--; header("Location: ".$pagina); } e tentei usar assim para calcular mas não deu certo: if(isset($_GET['cep'])) { $_SESSION["cep"]=$_GET['cep']; $cod_servico="41106"; $cep_origem ="26255170"; $cep_destino=$_GET['cep']; $peso="0.1"; $_SESSION["frete"]=calculaFrete('40045','26255170','96825150','0.1');; echo "CEP ".$_GET['cep']; # header("Location: ".$pagina); } Como eu devo fazer esta parte, pois eu vou precisar pegar outros valores, como o peso e as dimensões do produto e fazer a verificação se eles estão dentro das medidas dos correios. Desde já agradeço a quem se dispor a me dar uma luz. Compartilhar este post Link para o post Compartilhar em outros sites
regina 0 Denunciar post Postado Fevereiro 15, 2012 Dando um echo eu vejo o CEP e o valor do frete. if(isset($_POST['cep'])) { $_SESSION["cep"]=$_POST['cep']; # $_SESSION["tipo"]=$_GET['tipo']; $cod_servico="41106"; $cep_origem ="26255170"; $cep_destino=str_replace("-","",$_POST['cep']); $peso="0.2"; $frete=calculaFrete($cod_servico,$cep_origem,$cep_destino,$peso); $_SESSION["frete"]=$frete; echo $_SESSION["cep"]; echo $_SESSION["frete"]; # header("Location: ".$pagina); } Calcula o valor, mas não consigo pegar esse valor, e também exibe a seguinte mensagem de erro: Fatal error: Uncaught exception 'Exception' with message 'Serialization of 'SimpleXMLElement' is not allowed' in [no active file]:0 Stack trace: #0 {main} thrown in [no active file] on line 0 Como devo resolver esses problemas? Obrigada Compartilhar este post Link para o post Compartilhar em outros sites
regina 0 Denunciar post Postado Fevereiro 16, 2012 Bom dia, continuo com esses problemas Fatal error: Uncaught exception 'Exception' with message 'Serialization of 'SimpleXMLElement' is not allowed' in [no active file]:0 Stack trace: #0 {main} thrown in [no active file] on line 0 O estranho é que seu eu der um print ele me traz os valores certinho, verifico no próprio site dos Correios, gravei na sessão mas não consigo recuperá-la Deve ser simples mas eu não estou conseguindo, podem me ajudar?? if(isset($_POST['cep'])) { $_SESSION["cep"]=$_POST['cep']; $cod_servico="41106"; $cep_origem ="26255170"; $cep_destino=str_replace("-","",$_POST['cep']); $peso="0.2"; $frete=calculaFrete($cod_servico,$cep_origem,$cep_destino,$peso); $_SESSION["frete"]=$frete; echo $_SESSION["cep"]; echo $_SESSION["frete"]; } Grata Compartilhar este post Link para o post Compartilhar em outros sites
luan_alves 3 Denunciar post Postado Abril 7, 2012 Regina, eu não sei se você já conseguiu resolver o seu problema, mas eu passei pelo o mesmo problema hoje, e achei a solução neste fórum. http://stackoverflow.com/questions/6058966/uncaught-exception-exception-with-message-serialization-of-simplexmlelement Então a forma como resolvi foi assim: $previsao = array("imagem" =>(string)'http://www.google.com'.$atual[0]->icon['data'],'temperatura' =>(string)$atual[0]->temp_f['data'],'condicao' =>(string)$atual[0]->condition['data']); ou seja eu coloquei (string), quando eu passo a informação, para o meu array. Compartilhar este post Link para o post Compartilhar em outros sites
regina 0 Denunciar post Postado Abril 20, 2012 MUITÍSSIMO obrigada luan_alves!!! Tópico resolvido!!! Compartilhar este post Link para o post Compartilhar em outros sites