Página 1 de 1

PHP: passagem de variável

Enviado: 30 Dez 2020 00:36
por cjp
Pessoal, estou com problema em um PHP, ao tentar passar uma variável, com método POST, o segundo PHP não está recebendo a variável.

Já fiz isso em vários outros PHPs, funcionando. Só neste que não está funcionando.

Alguém poderia, por favor, me dizer o que estou fazendo de errado.

O primeiro PHP está assim:

Código: Selecionar todos

 echo '<form action="pontos.php"';
 echo "width='69%' style='height:240px;'>";
 echo "<br>";
 echo "<br>";
 echo "<br>";
 echo "<input type='hidden' name='nome' value=".$us.">";
 echo "<input size='45' style='font-size:180px' type='submit' id='Voltar' value='Voltar'>";
 echo "</form>";
 echo "<br>";
 echo "<br>";

Já verifiquei a variável $us está com o valor correto antes desse trecho.

O segundo PHP está assim:

Código: Selecionar todos

$us= $_POST['nome'];

echo "<br>";
echo $us;
echo "<br>";

Estranhamente, $us aqui está em branco.

Alguém pode me ajudar?

PHP: passagem de variável

Enviado: 30 Dez 2020 14:18
por ANDRIL
Já tentou especificar o método do form.

Código: Selecionar todos

<form action="pontos.php" method="post" ';
Att.

PHP: passagem de variável

Enviado: 30 Dez 2020 15:31
por cjp
De fato, o problema era esse. Muito obrigado.

PHP: passagem de variável

Enviado: 23 Jun 2022 01:36
por cjp
Pessoal,
Estou tendo novo problema com passagem de variável em PHP (este parece ser meu eterno problema em PHP). Podem me ajudar?
O problema é o seguinte:
Nesta página eu passo uma variável $qtd com o valor texto "+1":

Código: Selecionar todos

$qtd="+1";

$cod="xxx";

 
 echo "<table width='10%' border='1' cellpadding='1' cellspacing='1'>";
 
 echo "<tr>";
 
 echo "<td>";
 echo "<form action='prior8.php' method='post'>";
 echo "<width:30%>";
 echo "<height:100vh>";
 echo "<input type='hidden' name='cod' value=".$cod.">";
 echo "<input type='hidden' name='qtd' value=".$qtd.">";
 echo "<font size='11'>";
 echo "<input style='font-size:80px' name='submit' value='Xx +1' type='submit'>";
 echo "</form>";
 echo "</td>";
Na prior8.php, recebo assim:

Código: Selecionar todos

	$qtd= $_POST['qtd'];
	$qual= $_POST['cod'];
Até aqui tudo funcionando normalmente.

Agora surgiu a necessidade de refazer esta página, passando a variável de forma diferente:

Código: Selecionar todos

$qtd="+1";
$cod="xxx";
echo '<a href="priornovo2.php?&qtd='.$qtd.'&cod='.$cod.'" class="btn btn-primary btn-lg col-5 col-xs-5 col-sm-5 col-md-5 col-lg-5 col-xl-5 align-self-center d-flex flex-column justify-content-center align-items-center line-6">XX</a>';
Na priornovo2.php, recebo assim:

Código: Selecionar todos

	$qtd= $_GET['qtd'];
	$qual= $_GET['cod'];
Estranhamente, ao invés de $qtd aqui ser "+1", está apenas como "1".

Preciso do "+" aí, pois em outros pontos vou passar outros valores (ex: -1, -5, -10 etc).

Alguém poderia me ajudar?

PHP: passagem de variável

Enviado: 23 Jun 2022 09:00
por ANDRIL
Olá, isso acontece por que o + é um caracter reservado do navegador veja: ! * ' ( ) ; : @ & = + $ , / ? % # [ ]
Para utilizá-lo terá que escapar ele
pagina.php?qtd='+'1 &cod=152 &produto=BOLA
Mais informações
https://developers.google.com/maps/url- ... g?hl=pt-br
Até+

PHP: passagem de variável

Enviado: 24 Jun 2022 02:00
por cjp
Entendi o que vc disse, mas ainda não consegui fazer correto.
Acresci aspas simples (') antes e depois do +. Ficou assim:

Código: Selecionar todos

$qtd="'+'1";
	$cod="xxx";
	echo '<a href="priornovo2.php?&qtd='.$qtd.'&cod='.$cod.'" class="btn btn-primary btn-lg col-5 col-xs-5 col-sm-5 col-md-5 col-lg-5 col-xl-5 align-self-center d-flex flex-column justify-content-center align-items-center line-6">XX</a>';
Mas o priornovo2.php está recebendo a variável como ' 1'; não como +1 como esperado.

Imagino que o problema ocorra porque o echo já use aspas simples e aspas duplas.

Mas não sei como resolver isto.

Pode me ajudar?

PHP: passagem de variável

Enviado: 27 Jun 2022 09:33
por ANDRIL
Pela url não pode passar o sinal de adição como voce quer. Para que seja possível voce deve transformá-lo em HEXADECIMAL. Se voce utilizasse um form poderia usar o +1.

Na url a opção é
$qtd="%2B1";
$cod="xxx";
echo '<a href="priornovo2.php?&qtd='.$qtd.'&cod='.$cod.'" class="btn btn-primary btn-lg col-5 col-xs-5 col-sm-5 col-md-5 col-lg-5 col-xl-5 align-self-center d-flex flex-column justify-content-center align-items-center line-6">XX</a>';
Se fosse um form seria:
<form method="get" enctype="application/x-www-form-urlencoded">
<input name="qtd" id="qtd" value="+1"/>
...
<button type="submit">Enviar</button>
</form>
De qualquer forma, para usar de forma literal, seria mais fácil analisar o conteúdo da var no php para saber a operação que deseja fazer.

Código: Selecionar todos

if ($_GET['qtd']>0){
$qtd='+'.$_GET['qtd'];
}
Até+

PHP: passagem de variável

Enviado: 28 Jun 2022 01:50
por cjp
Ótima ideia.
Muito obrigado.