Jump to content

Passar variáveis após redireccionamento


Ivo Pereira
 Share

Recommended Posts

Boas pessoal,

é o seguinte, imaginem que tenho um formulário, e nesse formulário, tenho um optionbox que me vai ter várias opções como Editar, Eliminar e Listar.

De acordo com essas opções e com um item seleccionado numa radiobox também nessa página, o utilizador clicará e submeterá um formulário que irá dar a outra parte, para verificar que opção foi escolhida (Editar, Eliminar, Listar), mas com isto, nunca perdendo o valor do radio.

Formulário:


    <table width="100%" border="1">
    <tr>
    <td> </td>
    <td><strong>URL:</strong></td>
    <td><strong>Miniatura:</strong></td>
    <td><strong>Data:</strong></td>
    <td><strong>Título:</strong></td>
    <td><strong>Descrição:</strong></td>
    </tr>
    <tr>

    
    <?php


require_once('db/ligar.php');

$sql = mysql_query("SELECT ID FROM tv_noticias ORDER BY date");
for ($pass = 0; $pass < mysql_num_rows($sql); $pass++){

  $query = mysql_query("SELECT ID FROM tv_noticias WHERE ID = ".mysql_result($sql, $pass)." LIMIT 1");	
  echo '<td><input type="radio" name="selectedid"  value="'.mysql_result($query, 0).'"/></td>';	

  $query = mysql_query("SELECT url FROM tv_noticias WHERE ID = ".mysql_result($sql, $pass)." LIMIT 1");
  echo '<td><a href="'.mysql_result($query, 0).'" target="_blank">'.mysql_result($query, 0).'</a></td>';

  $query = mysql_query("SELECT thumbnail FROM tv_noticias WHERE ID = ".mysql_result($sql, $pass)." LIMIT 1");
  echo '<td><a onclick="alert(\''.mysql_result($query, 0).'\')" href="#"><img src="'.mysql_result($query, 0).'" height="60" width="94" alt="'.mysql_result($query, 0).'"  border="0" /></a></td>';

  $query = mysql_query("SELECT date FROM tv_noticias WHERE ID = ".mysql_result($sql, $pass)." LIMIT 1");
  echo '<td>'.mysql_result($query, 0).'</td>';

  $query = mysql_query("SELECT title FROM tv_noticias WHERE ID = ".mysql_result($sql, $pass)." LIMIT 1");
  echo '<td>'.mysql_result($query, 0).'</td>';

  $query = mysql_query("SELECT description FROM tv_noticias WHERE ID = ".mysql_result($sql, $pass)." LIMIT 1");
  echo '<td>'.mysql_result($query, 0).'</td>';
  
  echo "</tr>";
  
}

?>

    </tr></table>
</div>
    
    <br /><br />
<form action="accao.php" method="POST">
    <div align="right">
    Acção:
    <select size="1" name="accao">
<option selected value="escolher">Escolher...</option>
<option value="editar">Editar</option>
<option value="eliminar">Eliminar</option>
</select>
    
    <input type="submit" value="OK" name="actuar" />
</div>
    
</form>

accao.php

<?php

switch ($_POST['accao']) {
case "editar";
	echo "<script type=\"text/javascript\">\n";
	echo "window.location.href='noticias/editar.php'\n";
	echo "</script>";
	break;
case "eliminar";
	echo "Eliminar";
	break;
default;
	echo "Listar";
	break;
}

?>

Mas quando vai para a página noticias/editar.php, já não vai ter o valor do ID seleccionado no radio.

noticias/editar.php:

<?php

include('../db/ligar.php');

?>  

  
  <div id="mainContent">
  <form action="editnoticia.php" method="POST">
    <h1 class="a">URL da miniatura:<br />

<?php
  $query = mysql_query("SELECT thumbnail FROM tv_noticias WHERE ID = ".$_POST['selectedid']." LIMIT 1");
  echo '<input type="text" name="thumbnail" size="75" maxlength="70" value="'.mysql_result($query, 0).'"  />';
  
?>

Aqui nesta última parte, ele já não vai retornar nada no $_POST['selectedid'], pois entretanto já o perdeu no redireccionamento.

Se eu utilizar o header em vez do javascript, vai-me dizer que os headers já foram enviados.

Aceitam-se sugestões 🙂

Abraço 🙂

Link to comment
Share on other sites

ao fazeres o window.location.href='noticias/editar.php'\n"; estas a mandar mudar de página, e logicamente que perdes os valores do Post,

podes é fazer o seguinte:

<?php

switch ($_POST['accao']) {
        case "editar";
                include ("noticias/editar.php");
                break;
        case "eliminar";
                include ("noticias/eliminar.php");
                break;
        default;
                include ("noticias/listar.php");
                break;
        }
?>

podes tambem criar funções no próprio ficheiro que estas a receber o Post:

<?php

switch ($_POST['accao']) {
        case "editar";
                funcao_editar();
                break;
        case "eliminar";
                funcao_eliminar();
                break;
        default;
                funcao_listar();
                break;
        }

function funcao_editar() {
                echo ("editar");

}
function funcao_eliminar() {
                echo ("eliminar");

}
function funcao_listar() {
                echo ("listar");

}
?>

Ou ainda podes via javascript antes de fazer o submit, verificar qual a opção que esta seleccionada, e mudar o Action do forma, via javascript, enviado para a página correcta

Tudo o que não provoca a minha morte, torna-me mais forte.http://formacao-cursos.com

Link to comment
Share on other sites

Mas isso não me iria incluir o ficheiro, independentemente do que lá estava?

Se te referes ao:

include ("noticias/editar.php");

e aos outros 2,

sim,  e não, aqui vai incluir as funções php, html, ou que lá tiveres, cabe-te a ti, criares o ficheiro com o que te interessa que seja mostrado quando é chamado.

Tudo o que não provoca a minha morte, torna-me mais forte.http://formacao-cursos.com

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.