• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Sir Pereira

Passar variáveis após redireccionamento

6 mensagens neste tópico

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 :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Por isso é que eu queria fazer o redirect! Para aparecer só o conteúdo da outra página...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Então fazes o redirect depois de teres feito as alterações que pretendes. usando as tarefas dentro dos cases, ou por funções, como eu te coloquei ai em cima.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora