form action passando referência

Fórum sobre outras linguagens de programação.

Moderador: Moderadores

cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

form action passando referência

Mensagem por cjp »

Existe algum erro nesta forma de passar uma variável como referência num form action?

Código: Selecionar todos

 echo "<form action='responder.php?id='".($Arq)."' method='post'";
Estou tentando passar a variável $Arq como referência para o próximo php, sendo que ela já foi recebida como referência de um php anterior. A primeira passagem, do primeiro para o segundo php, está funcionando corretamente. Mas a segunda passagem, do segundo para o terceiro php, não está funcionando; está passando o id em branco. No que estou errando?

O segundo php está assim:

Código: Selecionar todos

<html>
 <head>
  <title>Listando tarefa</title>
 </head>
 <body>
<?php
$Arq = $_GET['id'];

$banco = "xxxxxx";
$usuario = "xxxxx";
$senha = "xxxxx";
$hostname = "mysql.xxxx.com.br";

echo '<font size="38">';

$conn = mysql_connect($hostname,$usuario,$senha);
if (!$conn) {echo "Não foi possível conectar ao banco MySQL.
"; exit;}


$sel=mysql_select_db($banco,$conn);
if (!sel)
   {
    echo "Não foi possível abrir o banco de dados";
    echo 'MySQL Error: ' . mysql_error();
    exit;
	}
$sql="SELECT nrtarefa,date_format(data,'%d/%m/%Y'),hora,assunto,tarefa FROM tarefas WHERE nrtarefa='".$Arq."'";
 $rs=mysql_query($sql);
 if (!$rs)
 {exit("Error in SQL");}

 $nrec = mysql_num_rows($rs); //total de registros

 echo "Tarefa: ".$Arq;
      echo '<br>';
 echo "Total de registros: ".$nrec;
      echo '<br>';
 echo "Assunto: ".mysql_result($rs,$i,3);
      echo '<br>';
	  
 while (mysql_fetch_row($rs))
 {
  echo "<tr>";
  
  $a=mysql_result($rs,$i,4);
  //$data=new DateTime; //mysql_result($rs,$i,1);
      echo '<br>';
	  if(strstr($a,"Resposta"))
         {	 
	     echo mysql_result($rs,$i,1);
		 //echo $data->format( 'd-m-Y' ), "/n";
		 echo " às ";
	     echo mysql_result($rs,$i,2);
		 echo " horas: ";
		 }
	  echo mysql_result($rs,$i,4);

 $i++;
 }
 mysql_close($conn);
 echo "<form action='responder.php?id='".($Arq)."' method='post'";
 echo "width='69%' style='height:240px;'>";
 echo "<br>";
 echo "<br>";
 echo "<input size='45' style='font-size:180px' type='submit' id='Responder' value='Responder'>";
 echo "</font>";
 echo "</form>";
?>

 </body>
</html>
E o terceiro php está assim:

Código: Selecionar todos

<html>
 <head>
  <title>Responder tarefas</title>
 </head>
 <br>
 <body onbeforeunload='reset_combo()'> 
<?php
$Arq= urldecode($_GET['id']);
$tid=$Arq;
?>
  <form action="cadresp.php?id=".($tid)." method="post"
 width="69%" style='height:200px;'>
   <font size="27">
   <label>Resposta:</label>
   <br>
   <input size="40" type="text" name="filtro" id="filtro" style="font-size:150px" value="Digite aqui a resposta" onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'Digite aqui a resposta';}">
   <br>
   <br>
   <input size="40" style="font-size:150px" type="submit" id="Enviar" value="Enviar">
   <BR>
   </font>
  </form>
 </body>
</html>
Alguém me ajuda?
Inacio de Carvalho Neto
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

form action passando referência

Mensagem por Toledo »

cjp escreveu:Existe algum erro nesta forma de passar uma variável como referência num form action?
O correto seria:

Código: Selecionar todos

echo '<form action="responder.php?id='.$Arq.'" method="post"';
Não que a troca de aspas simples por aspas duplas vai resolver, mas geralmente em código HTML sempre se usa aspas duplas, por este motivo eu troquei as aspas.
Mas o erro estava nos ( e ) que você estava usando e principalmente na aspas simples que estava depois de id= (id='".($Arq)."').

Agora, no seu terceiro PHP, o correto seria:

Código: Selecionar todos

<form action="cadresp.php?id=<php echo $tid; ?>" method="post"
Uma pequena observação no seu segundo PHP, na linha 47 tem echo "<tr>";, então se você vai usar o comando <tr>, obrigatoriamente você teria que ter um <table> e seu respectivo </table>, um <td> e seu respectivo </td> e também o </tr>. Não sei como o navegador vai interpretar um <tr> sozinho, mas provavelmente deve ser ignorado.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

form action passando referência

Mensagem por cjp »

Funcionou, meu caro. Muito obrigado.

E o tr estava sobrando mesmo.
Inacio de Carvalho Neto
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

form action passando referência

Mensagem por cjp »

Colegas, desculpem, mas estou de novo tendo dificuldade com essa situação de passar variáveis por referência.

Tenho um PHP assim:

Código: Selecionar todos

<html>
<head>
  <title>Cadastrando preço de produtos</title>
</head>
<?php
$Prod = $_GET['id'];
$Prm= $_POST['prm'];

echo "Produto: ".$Prod;
echo "<br>";
echo "Preço máximo: ".$Prm;
echo "<br>";

echo "<body style='color: rgb(0, 0, 0); background-color: rgb(255, 204, 153)'";
echo "alink='#000099' link='#000099' vlink='#990099'>";
echo '<form action="cadpreco.php?id='.($Prod).($Prm).'" method="POST"> <input type="hidden">';
?>

 <left>
 <table align="left" border="0" cellpadding="0" cellspacing="0"
 width="49%" style='height:40px;'>
 <form action="filtrar.php" method="post">
 <BR>
   <tr>
   <font size="38">
    <label>Valor:</label>
    <input type="number" step="any" style="font-size:60px" name="valor">

   </tr>
    <td> <input style="font-size:130px" name="submit" value=" Enviar " type="submit">
 <BR>
   </tr>
  </tbody>
 </table>
 </left>
</form>
</body>
<?php
 echo "<br>";
 echo '<form action="comprar.php"';
 echo "width='65%' style='height:150px;'>";
 echo "<br>";
 echo "<br>";
 echo "<br>";
 echo "<input size='35' style='font-size:120px' type='submit' id='Voltar' value='Voltar'>";
 echo "</form>";
?>
</html>
O php está assim:

Código: Selecionar todos

<html>
 <head>
  <title>Cadastrando preço do produto</title>
 </head>
 <body>
<?php
$banco = "xxx";
$usuario = "xxx";
$senha = "xxx";
$hostname = "mysql.xxx.com.br";
$vl= ($_POST['valor']);
$prod = ($_POST['$Prod']);
$prod2 = urldecode($_GET['$Prod']);
echo "Produto2: ".$prod2;
echo "<br>";

echo "Produto: ".$prod;

$conn = mysql_connect($hostname,$usuario,$senha);
if (!$conn) {echo "Não foi possível conectar ao banco MySQL.
"; exit;}

$sel=mysql_select_db($banco,$conn);
if (!sel)
   {
    echo "Não foi possível abrir o banco de dados";
    echo 'MySQL Error: ' . mysql_error();
    exit;
	}


$sql2="UPDATE compras SET prmercador=".$vl.",dtmercador='".date('Y-m-d')."',marcacao=' ',data='".date('Y-m-d')."' WHERE produto='".$prod."'";


   $result = mysql_query($sql2);
if (!$result) 
   {
    echo "Não foi possível incluir os dados";
    echo 'MySQL Error: ' . mysql_error();
    exit;
	}
else
   echo "<font face='arial' color='red' size='26'>";
   echo "Preço (".$vl.") do produto ".$prod." foi inserido com sucesso";

 echo '<form action="comprar.php"';
 echo "width='69%' style='height:240px;'>";
 echo "<br>";
 echo "<br>";
 echo "<br>";
 echo "<br>";
 echo "<input size='45' style='font-size:180px' type='submit' id='Voltar' value='Voltar'>";
 echo "</form>";
   
?>
No primeiro php, que já recebe a variável $prod de outro php por referência, está funcionando corretamente. Mas no segundo não. Noto pelo link que o primeiro até está passando corretamente a variável. Então, creio que o erro esteja na forma de pegar a variável. Já testei de todas as formas, com GET, com POST, com urldecode ou não. Mas não funciona de forma alguma.

Alguém me ajuda?
Inacio de Carvalho Neto
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

form action passando referência

Mensagem por ANDRIL »

Na sua linha 18, voce abriu um form e não tem a tag de fechamento. Logo abaixo no seu codigo, abriu novos forms sem que fechasse o primeiro, isso pode estar dando um submit porem sem passar o conteúdo que voce deseja. Outra, em PHP evito usar form dentro de form, cada um tem que ter seu espaço separado.

Código: Selecionar todos

echo '<form action="cadpreco.php?id='.($Prod).($Prm).'" method="POST"> <input type="hidden">';
Não há problema algum receber e passar parametros de uma pagina a outra, alias, isso é necessario em PHP. O que deve ter é algum erro no codigo que impede essa passagem corretamente, geralmente no HTML passa batido, por que no PHP daria RUNTIME. Reveja o código e a lógica.

Ate+.
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

form action passando referência

Mensagem por cjp »

Realmente estava faltando o /form nessa linha. Corrija.

Mas ainda assim não está funcionando a passagem da variável. E eu não sei como resolver isso.
Inacio de Carvalho Neto
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

form action passando referência

Mensagem por cjp »

Pessoal, eu escrevi errado na última mensagem "Corrija". Quis dizer "Corrigi". Peço desculpa pelo erro.

Ainda preciso da ajuda de vocês para resolver este problema, por favor.
Inacio de Carvalho Neto
Responder