Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Carcleo

Não imprime valor de variável

Recommended Posts

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!

Compartilhar este post


Link para o post
Compartilhar em outros sites

assim:

 

<? 
if ($acao=="envia_dados")
 {        
   include ("frete.php");   
   $print $TENVIO;  /imprimo aqui
   //    $result = calcula_frete(FRETE_SEDEX, $TCEP, '36855000', '2');    
   $result = calcula_frete($TENVIO, $TCEP, '36855000', '2');   
   $print $TENVIO;  /imprimo aqui
?>

Viu o $print $TENVIO; /imprimo aqui

 

Pode colocar tambem $_POST['TENVIO']; que esta dando na mesma.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

 

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

print é uma função, não uma variável.

retire o cifrão.

 

 

Leia as regras.

DÊ títulos condizentes com suas dúvidas.

Título editado:

Sinistro http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Não imprime valor de variável

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oh irmão, seguinte cara.

 

Esquece o lance de imprimir.

 

O problema é o seguinte:

 

Tem dois campós no foermulario.

Um campo de texto

Um campo select

Pode ver la no incio deste post.

 

Bom, acontece que após enviar o form para o seu action, o valor do campo texto vai masa o valor do select não vai.

 

Resolvi substituir(para testar) esse campo select por um text com o menmo name é foi normal.

 

O sinistro que falei é que e só dentro da funçao que ele não vai.

 

$result = calcula_frete($TENVIO, $TCEP, '36855000', '2');

 

Viu o $TENVIO?

 

Pois é, o $TCEP vai mas o $TENVIO não vai.

 

Se colocar pra imprimir fora da função. Tipo echo $TENVIO. imprimi.

 

Se gue o codigo todo:

<? if ($acao=="qual_cep") {
	?>
	<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" id="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>
    <?
                         }
?>
<? if ($acao=="envia_dados") {
	include ("frete.php");
    $result = calcula_frete($TENVIO, '36855000', $TCEP, $peso_medio);
?>
	<FORM METHOD="POST" ACTION="CarrinhoFinal.php" name="FORM_COMPRA">
	<INPUT TYPE="hidden" NAME="FORM" VALUE="FORM">
    <INPUT TYPE="hidden" NAME="peso_medio" VALUE="<?=$peso_medio;?>">
	<TABLE width="400" align="center">
	<tr><td colspan="2" align="center"><h2><b>Finalizando Compra</b></h2></td></tr>
		<input type="hidden" name="preco_total" value="<?=number_format($preco_total, 2, '.', ''); ?>">	
	<TR>
		<TD>PAGAMENTO </TD>
		<TD>
      <!--
        <div id="cartao" style="display:block;">oi</div>
        onclick="javascript: fecha('cartao');"
        -->
            <INPUT type="radio" NAME="TPGTO" value="MASTERCARD" checked="checked"> MASTERCARD 
            <br>
            <INPUT type="radio" NAME="TPGTO" value="BOLETO"> BOLETO  (À Vista)<br>
            <INPUT type="radio" NAME="TPGTO" value="DEPOSITO">           
             DEPÓSITO  (À Vista)
      </TD>
	</TR>
	<TR>
		<TD>NOME:/RAZÃO SOCIAL </TD>
		<TD><INPUT TYPE="text" NAME="TNOME" value="<?=$nome;?>" disabled="disabled"></TD>
	</TR>    
	<TR>
		<TD>CPF/CNPJ:</TD>
		<TD><INPUT TYPE="text" NAME="TCPF" value="<?=$cpfcnpj;?>" disabled="disabled"></TD>
	</TR>
    <TR>
		<TD>EMAIL:</TD>
		<TD><INPUT TYPE="text" NAME="TEMAIL" value="<?=$email;?>" disabled="disabled"></TD>
	</TR>	
	<TR>
		<TD>ENDEREÇO: <font color="red">(de entrega)</font></TD>
		<TD><INPUT TYPE="text" NAME="TENDERECO" value="<?=$endereco;?>"></TD>
	</TR>
	<TR>
		<TD>BAIRRO:</TD>
		<TD><INPUT TYPE="text" NAME="TBAIRRO" value="<?=$bairro;?>"></TD>
	</TR>
	<TR>
		<TD>CIDADE:</TD>
		<TD><INPUT TYPE="text" NAME="TCIDADE" value="<?=$cidade;?>"></TD>
	</TR>
	<TR>
		<TD>ESTADO:</TD>
		<TD><INPUT TYPE="text" NAME="TESTADO" disabled="disabled" value="<? print $result[UFdestino]; ?>"></TD>
	</TR>
   <TR>
		<TD>FONE:</TD>
		<TD><INPUT TYPE="text" NAME="TFONE" value="<?=$tel;?>" disabled="disabled"></TD>
	</TR>	
	<TR>
		<TD>VALORES:</TD>
		<TD>
		<?
         print "Valor do frete R$ ";
         print number_format($result[Tarifa], 2, ',', '.');
		 print "<br>";
         print "Valor da compra sem o frete R$ ";
         print number_format($preco_total, 2, ',', '.');
		 print "<br>";
         print "Valor da compra xom o frete R$ ";
         print number_format($result[Tarifa]+$preco_total, 2, ',', '.');		 
		 ?>
		</TD>
	</TR>
	<TR align="center">
	  <TD colspan="2"><input type="submit" value="Finalizar" name="Finalizar" WIDTH="78" HEIGHT="20" style="background-color: rgb(0,111,55); color: rgb(255,255,0)" onClick="CriticaFormulario()"></TD>
	</TR>
  </TABLE>
</FORM>
<? } ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como você não postou como está fazendo dentro da função, vou explicar um pouco sobre escopo de variáveis.

Uma variável pode ser local, global ou superglobal. As superglobais são $_GET, $_POST, $_SESSION, $_SERVER, $_REQUEST, $_COOKIE, $_FILES e

$_ENV.

http://br.php.net/manual/en/language.variables.superglobals.php

 

Uma variável superglobal estará disponível em qualquer parte do script, ou seja dentro, de funções e métodos, sem a necessidade da definição de global. Já para as outras variáveis serem utilizadas dentro de uma função, temos que utilizar a definição de variável global. Vejamos alguns exemplos:

<?php
$teste = 'Estou testando o escopo das variáveis.';
// aqui definimos a função
function testeGlobal()
{
   echo $teste;
}
// aqui executamos
testeGlobal();
Ao executar este código, receberemos um NOTICE de variável indefinida e não será impresso nada na tela, porque a $teste não está disponível dentro da função. Agora, para utilizar o valor de $teste dentro da função, podemos passar por parâmetro ou defini-la como global.

<?php
$teste = 'Estou testando o escopo das variáveis.';
// definimos a função
function testeGlobal()
{
   // aqui definimos a $teste como global, ou seja, ela vem de fora da função
   global $teste;
   echo $teste;
}
// aqui executamos
testeGlobal();

Neste caso, teremos impresso na tela o valor da $teste. Agora, passando por parâmetro

<?php
$teste = 'Estou testando o escopo das variáveis.';
// definição da função, passando a $parametro
function testeGlobal($parametro)
{
   // veja que imprimimos a $parametro, que é a variável que foi colocada como parâmetro.
   echo $parametro;
}
// aqui passamos a $teste como parâmetro
testeGlobal($teste);
Ao executar este código, teremos a mensagem impressa na tela. Veja que, mesmo passando a $teste para a função, dentro da função utilizamos a $parametro, que foi o nome utilizado na definição da função.

 

Espero que ajude a resolver o seu problema.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.