Página 1 de 1

form action passando referência

Enviado: 31 Jan 2015 22:10
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?

form action passando referência

Enviado: 01 Fev 2015 09:19
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,

form action passando referência

Enviado: 01 Fev 2015 15:11
por cjp
Funcionou, meu caro. Muito obrigado.

E o tr estava sobrando mesmo.

form action passando referência

Enviado: 28 Mar 2015 14:25
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?

form action passando referência

Enviado: 28 Mar 2015 17:20
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+.

form action passando referência

Enviado: 28 Mar 2015 17:31
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.

form action passando referência

Enviado: 30 Mar 2015 14:11
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.