Ir para conteúdo
Fórum Script Brasil
  • 0

Sinistro


Carlos Rocha

Pergunta

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!

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

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).

Link para o comentário
Compartilhar em outros sites

  • 0

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!

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...