Carcleo 4 Denunciar post Postado Fevereiro 19, 2010 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
visitante_php 0 Denunciar post Postado Fevereiro 19, 2010 você esta imprimindo com $_POST['nomedocampo']....parece q nao....você disse q da pra imprimir, como você esta imprimindo.....? Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Fevereiro 19, 2010 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
Carcleo 4 Denunciar post Postado Fevereiro 20, 2010 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
Beraldo 864 Denunciar post Postado Fevereiro 20, 2010 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
Carcleo 4 Denunciar post Postado Fevereiro 20, 2010 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
Matias Rezende 50 Denunciar post Postado Fevereiro 21, 2010 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