Ir para conteúdo

POWERED BY:

Arquivado

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

paulo.cez

Problema ao passar dados contento & via $_GET

Recommended Posts

Boa Tarde Amigo!


Tenho uma pagina com algumas variaveis passando para outra pagina via url e recebendo via $_GET.


Mas em uma das variaveis, armazeno o nome da empresa e algumas tem em seu nome o caracter "&".

Ao passar para a outra pagina, só é exibido a informação antes do "&"


Exemplo:


Nome da Empresa: W & S CONFECÇOES LTDA


Nesse caso só é exibido o "W" e nada mais.


Quando o nome da empresa não tem esse caracter, a informação é exibida sem problema.


Alguem poderia me ajudar?


Compartilhar este post


Link para o post
Compartilhar em outros sites

E é um caractere especial em URLs. Na Query string, [inline]&[/inline] serve para separar um paramento de outro, portanto, quando for passado por uma URL, [inline]&[/inline] deve ser codificado como [inline]%26[/inline].

 

Não é adequado usar [inline]GET[/inline] para submeter informações, nestes casos você deve usar o método [inline]POST[/inline]. Mude isso e não terá mais problemas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Claro! Entendo, que não é adequado passar dados por url, mas como se trata de uma pagina interna da empresa, não tem problema.

 

Já tentei usar o metodo post, mas ao passar para outra pagina os dados iam vazios. Segue parte do script

 

while($linha = pg_fetch_array($res1))
{
echo '<tr>';
echo '<tr bgcolor ="#ccc"><font color = $cor>';
echo '<td>11716970000000<font color= ##00008B $cor size= 4>'. $linha['dpenosnum'] . '</td>';
echo '<td>' . $linha['dpepar'] . '</td>';
echo '<td>' . $linha['dpenumnot'] . '</td>';
echo '<td>' . $linha['dpedatemi'] . '</td>';
echo '<td>R$ ' . $linha['dpevlrpar'] . '</td>';
echo '<td>' . $linha['dpedatven'] . '</td>';
echo '<td>' . $linha['clicod'].'--' .$linha['clinom'] . '</td>';
echo '<td>' . $linha['usunom'] . '</td>';
echo "<td><a href='boleto.php?nota=$linha[dpenumnot]&parcela=$linha[dpepar]&datavenda=$linha[dpedatemi]&vlrparcela=$linha[dpevlrpar]&cliente=$linha[clinom]&endereco=$linha[cliend]&numero=$linha[cliendnum]&cidade=$linha[clicid]&estado=$linha[cliest]&cep=$linha[clicep]&vencimento=$linha[dpedatven]&nosnum=$linha[dpenosnum]'>Imprimir Boleto</a></td>";
e no boleto.php
$dadosboleto["nosso_numero"] = $_GET['nosnum'];
Sobre este problema do caracter "&", existe uma forma de isolar, ou eu tenho que mudar para o $_POST?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em qual navegador você está fazendo isso?

 

Geralmente o navegador faz a conversão. Por exemplo, no navegador que uso (Chrome 27), ao digitar no campo o nome "Procter & Gamble", ele automaticamente converte para "Procter+%26+Gamble" na URL, para não haver problemas. Em navegadores antigos, talvez isso não seja feito adequadamente...

 

De qualquer forma, eu repito, [inline]GET[/inline] não é o método apropriado para transmitir esse tipo de dado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola mangakah

 

O meu também é 27 e mesmo assim não converte, o internet explorer também não!

 

Como posso converter este método para $_POST?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na sua tag [inline]<form>[/inline], coloque "post" no atributo [inline]method[/inline]:

<form method="post">
(se esse atributo não existir na sua tag [inline]<form>[/inline], basta adicioná-lo)

 

 

O dados não estarão mais em [inline]$_GET[/inline], mas em sim [inline]$_POST[/inline].

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, entendo

 

Só que quando vou passar as variavies o valor não passa

 

Exemplo

 

<form name = "frmboletos" method="POST" action = "boletos.php">
boleto inicial:<input type="hidden" size="6" name = "nosso" value="$linha[dpenosnum]">
<input type="submit" value="CONSULTAR">

 

O VALUE = aparece vazio, ou aparece com a informação $linha[dpenosnum] em vez do numero. Se eu coloco o valor fixo na variavel value ele passa normal, mas se eu coloco uma variavel, não

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está misturando HTML com PHP aí...

 

tem de ser:

value="<?php echo $linha[dpenosnum]; ?>"

Você precisa sempre incluir as tags de abertura e fechamento de bloco de código e o comando [inline]echo[/inline].

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo fiz como pediu

 

echo "<tr bgcolor = $cor >";
echo '<td>' . $linha['dpenosnum'] . '</td>';
echo '<td>' . $linha['dpenumnot'] . '</td>';
echo '<td>' . $linha['dpedatemi'] . '</td>';
echo '<td>R$ ' . $linha['dpevlrpar'] . '</td>';
echo '<td>' . $linha['dpedatven'] . '</td>';
echo '<td>' . $linha['clinom'] . '</td>';
echo '<td>' . $linha['usunom'] . '</td>';
echo '<td><form name = "frmboletos2" method="POST" action = "boleto_bb2.php"><input type="hidden" name = "nosnum" value="< ?php echo $linha[dpenosnum]; ?>"><input type="submit" value="CONSULTAR">';
e na outra pagina assim:
$dadosboleto["nosso_numero"] = $_POST['nosnum'];
mas o valor que é recebido é "< ?php echo $linha[dpenosnum]; ?>" e não o valor armazenado na variavel.
Tentei tirar os aspas entre os <> mas ai o é exbido somente o "<" no resultado.
o que á de errado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Há de errado que você não concatenou strings.

 

Veja, a partir do momento que você abre uma aspa: [inline]echo '[/inline], você diz ao PHP: "Imprima na tela isso aqui... Não percebeu o desencontro ali? Você tem [inline]echo[/inline] dentro de echo??

 

 

    echo '<td><form [...] value="< ?php echo $linha [...]

 

 

 

Mais uma coisa: Se você já está no PHP, não precisa "abrir php ([inline]<?php[/inline])".
echo '<td><form ...><input type="hidden" ... value="' . $variavel . '">...';

http://php.net/string

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado Evandro Oliveira!

 

Resolvido, só que quando clico em qualquer botão submit "consultar" ele só envia o ultimo resultado da linha, que neste exemplo é o 562, problema que não acontecia com o metodo usando $_GET

 

EXEMPLO:

 

BOLETO NOTA DATA VLR_PARCELA VENCIMENTO CLIENTE
560 2747 03/06/2013 R$ 890.00 18/07/2013 W & S CONFECÇOES LTDA
561 2747 03/06/2013 R$ 890.00 17/08/2013 W & S CONFECÇOES LTDA
562 2747 03/06/2013 R$ 890.00 16/09/2013 W & S CONFECÇOES LTDA

Compartilhar este post


Link para o post
Compartilhar em outros sites

consegui, esqueci de fechar o form no final.

 

So mais um probleminha... ao passar o valor para a pagina acontece o seguinte:

 

a variavel "nosnum" é adicionada ao um outro valor que fica assim: 11716970000000559 sendo que o valor passado nessa variavel é o valor 559 e quando eu uso pelo form o nosnum fica assim 1171697567 comendo os "0" zeros que tem no meio.

 

Agora se eu fixo o valor na variavel onde tem o $_POST, tipo $dadosboleto["nosso_numero"] = "559" ao inves de $dadosboleto["nosso_numero"] = $_POST['nosnum']; o sistema informa o nosso numero correto.

 

Sera que tenho que converter a variavel em string?



Resolvido, converti a variavel em inteiro usando (int)

 

Obrigado ao pessoal que me ajudou: mangakah e Evadnro Oliveira

 

Vivendo e aprendendo.

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.