Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

JhoniWillian

Refresh Perdendo valores do GET

Recommended Posts

Olá, boa tarde

 

Estou com um probleminha.

 

Eu tenho duas páginas, uma que tem um formulário de filtragem. Onde eu informo 5 informações.

 

E após enviar pelo submit do form, ele vai para outra página, onde eu faço os $variavel = $_POST['campo'] 

 

Após isso nessa mesma pagina, eu jogo o valor da $variavel dentro de um mysql_query onde os campos que eu preenchi irão ser pesquisados através de um select em meu banco de dados. E com isso me retorna uma tabela em html com as informações do select e filtragem.

 

Porém, preciso que essa informação seja atualiza no meu relatório de tempos em tempos. Estou usando esse código para atualizar:

 

<?php echo "<meta HTTP-EQUIV='refresh' CONTENT='30;URL=select.php'>"; ?>  (30 seg exemplo).

 

só tem um detalhe, quando eu atualizo pelo F5, ele pede para confirmar a atualização porque existem valores que precisam ser reeviados, etc. 

 

Eu dou OK e mantem o valor do meu filtro da pag anterior. Porém, se eu deixo ele atualizar direto pelo HTTP-EQUIV='refresh'

 

Ele perde a filtragem e me retorna o select todo. 

 

<?php
	
	$ordem = $_POST['ordem'];
	$operacao = $_POST['operacao'];
	$pedido = $_POST['pedido'];
	$dlinicio = $_POST['dlinicio'];
	$dlfim = $_POST['dlfim'];

		header('Content-Type: text/html; charset=utf-8');

		// Conexão ao banco
		error_reporting (E_ALL & ~ E_NOTICE & ~ E_DEPRECATED);
		
		$conexao = mysql_connect('127.0.0.1','root','');
		$banco = mysql_select_db('dbpixie', $conexao);
		
		
			
		if($conexao)
		{
			if($ordem || $operacao || $pedido || $dlinicio || $dlfim)
			{
				//Exibir registros da consulta
				$consulta = mysql_query("SELECT ordem, pedido, DATE_FORMAT(inicio_prev,'%d/%m %H:%i') as inicio_prev, DATE_FORMAT(fim_prev,'%d/%m %H:%i') as fim_prev, DATE_FORMAT(inicio_prod,'%d/%m %H:%i') as inicio_prod , DATE_FORMAT(fim_prod,'%d/%m %H:%i') as fim_prod FROM pixie_andon_nc where ordem = '$ordem' and pedido = '$pedido' and operacao = '$operacao' and DATE_FORMAT(inicio_prev, '%d/%m/Y') >= '$dlinicio' and DATE_FORMAT(fim_prev, '%d/%m/%Y') <= '$dlfim'"); 
		}
			else
			{
				//Exibir tudo
				$consulta = mysql_query("SELECT ordem, pedido, DATE_FORMAT(inicio_prev,'%d/%m %H:%i') as inicio_prev, DATE_FORMAT(fim_prev,'%d/%m %H:%i') as fim_prev, DATE_FORMAT(inicio_prod,'%d/%m %H:%i') as inicio_prod , DATE_FORMAT(fim_prod,'%d/%m %H:%i') as fim_prod FROM pixie_andon_nc where operacao = '00015'"); //Exibir últimos 10 registros, DESC
			}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esses tempos eu tive que fazer um formulário com muitos campos e pra facilitar separei em etapas e pra não perder salvei os $_POST em uma $_SESSION.

$ordem = $_POST['ordem'];
$operacao = $_POST['operacao'];
$pedido = $_POST['pedido'];
$dlinicio = $_POST['dlinicio'];
$dlfim = $_POST['dlfim'];

$_session['ordem'] = $ordem;
$_session['operacao'] = $operacao;
$_session['pedido'] = $pedido;
$_session['dlinicio'] = $dlinicio;
$_session['dlfim'] = $dlfim;

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo, bom dia
 

Tentei utilizar SESSION e também está dando problema ao atualizar automaticamente

 

Se eu atualizo pelo F5 e confirmo o reenvio de dados, ele mantem os valores do filtro.

 

Se ele atualiza sozinho pelo HTTP-EQUIV='refresh' ele cancela o filtro que eu tinha feito na pag anterior

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, bom dia

 

Estou fazendo isso: 

 

$ordem = $_POST['ordem'];
		$operacao = $_POST['operacao'];
		$pedido = $_POST['pedido'];
		$dlinicio = $_POST['dlinicio'];
		$dlfim = $_POST['dlfim'];
	
		$_SESSION['ordem'] = $ordem;
		$_SESSION['operacao'] = $operacao;
		$_SESSION['pedido'] = $pedido;
		$_SESSION['dlinicio'] = $dlinicio;
		$_SESSION['dlfim'] = $dlfim;
		
		header('Content-Type: text/html; charset=utf-8');
		
		if($conexao)
		{
			// SE TIVER DADOS NA SESSÃO, ELE FAZ ESSE SELECT
			if($_SESSION['ordem'])
			{
				//Exibir registros da consulta
				$consulta = mysql_query("SELECT ordem, pedido, DATE_FORMAT(inicio_prev,'%d/%m %H:%i') as inicio_prev, DATE_FORMAT(fim_prev,'%d/%m %H:%i') as fim_prev, DATE_FORMAT(inicio_prod,'%d/%m %H:%i') as inicio_prod , DATE_FORMAT(fim_prod,'%d/%m %H:%i') as fim_prod FROM pixie_andon_nc where ordem = '".$_SESSION['ordem']."'"); 
			}
			
			// SE NÃO TIVER INFORMAÇÃO NO FILTRO DO CAMPO ORDEM, ELE TRÁS TODO O RESULTADO DA TABELA 
			else
			{
				//Exibir tudo
				$consulta = mysql_query("SELECT ordem, pedido, DATE_FORMAT(inicio_prev,'%d/%m %H:%i') as inicio_prev, DATE_FORMAT(fim_prev,'%d/%m %H:%i') as fim_prev, DATE_FORMAT(inicio_prod,'%d/%m %H:%i') as inicio_prod , DATE_FORMAT(fim_prod,'%d/%m %H:%i') as fim_prod FROM pixie_andon_nc"); //Exibir últimos 10 registros, DESC
			}
		}

Repare que passei os POST pro session 

 

ai ele cai no If da conexão com o banco. Se a conexão for realizada ai ele cai no if do filtro.

 

(não se se estou fazendo certo) Mas se tiver uma ordem específica no filtro, ele ta puxando somente a ordem.

 

Porém se eu deixar o campo ordem em branco, ele faz o filtro todo.


Até ai está ok.

 

Porém quando atualiza pelo HTTP-EQUIV='refresh' ele perde as informação e cai dentro do else trazendo todos os resultados.

 

Mas se atualizo pelo F5 e confirmo o reenvido de dados, ele mantem somente a ordem que informei no filtro

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você iniciou a $_SESSION com start no inicio do arquivo?

session_start();

E tenta fazer assim:  

if($_SESSION['ordem'])
// muda para
 if (isset($_SESSION['ordem'])){

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
<?php
$ordem = $_POST['ordem'];
		$operacao = $_POST['operacao'];
		$pedido = $_POST['pedido'];
		$dlinicio = $_POST['dlinicio'];
		$dlfim = $_POST['dlfim'];
	 
	    if(!isset($_SESSION['ordem']))
	    {
			$_SESSION['ordem'] = $ordem;
			$_SESSION['operacao'] = $operacao;
			$_SESSION['pedido'] = $pedido;
			$_SESSION['dlinicio'] = $dlinicio;
			$_SESSION['dlfim'] = $dlfim;
		}
		
		header('Content-Type: text/html; charset=utf-8');
		
		if($conexao)
		{
			// SE TIVER DADOS NA SESSÃO, ELE FAZ ESSE SELECT
			if($_SESSION['ordem'])
			{
				//Exibir registros da consulta
				$consulta = mysql_query("SELECT ordem, pedido, DATE_FORMAT(inicio_prev,'%d/%m %H:%i') as inicio_prev, DATE_FORMAT(fim_prev,'%d/%m %H:%i') as fim_prev, DATE_FORMAT(inicio_prod,'%d/%m %H:%i') as inicio_prod , DATE_FORMAT(fim_prod,'%d/%m %H:%i') as fim_prod FROM pixie_andon_nc where ordem = '".$_SESSION['ordem']."'"); 

				//limpa sessão
				unset($_SESSION['ordem']);
				unset($_SESSION['operacao']);
				unset($_SESSION['pedido']);
				unset($_SESSION['dlinicio']);
				unset($_SESSION['dlfim']);
			}
			
			// SE NÃO TIVER INFORMAÇÃO NO FILTRO DO CAMPO ORDEM, ELE TRÁS TODO O RESULTADO DA TABELA 
			else
			{
				//Exibir tudo
				$consulta = mysql_query("SELECT ordem, pedido, DATE_FORMAT(inicio_prev,'%d/%m %H:%i') as inicio_prev, DATE_FORMAT(fim_prev,'%d/%m %H:%i') as fim_prev, DATE_FORMAT(inicio_prod,'%d/%m %H:%i') as inicio_prod , DATE_FORMAT(fim_prod,'%d/%m %H:%i') as fim_prod FROM pixie_andon_nc"); //Exibir últimos 10 registros, DESC
			}
		}
?>

 

 

O que ocorre é que você por não verificar se a SESSÃO já existia, então o POST sempre sobrescrevia (no F5), porém como estava perdendo POST, logo gerava uma SESSÃO em branco...  

 

Então o que fiz foi verificar se já existe a SESSÃO,  assim ele apenas insere dados do POST nela caso ela ainda NÃO exista...

 

Ai ele executa a ação...  coloquei UNSET para limpar caso tudo de OK, porém ai você veja se aplica no seu caso, se não, remova o UNSET.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

10 minutos atrás, AndersonWS disse:

(isset($_SESSION['ordem']))

 

Amigo, fiz isso e agora se eu deixo a ordem em branco, não filtra exatamente nada, porém, se eu informo a ordem ele filtra e quando atualiza pelo reflesh cai no else novamente e trás todos os resultados.

 

 

11 minutos atrás, kinzinho disse:

 


$ordem = $_POST['ordem'];
        $operacao = $_POST['operacao'];
        $pedido = $_POST['pedido'];
        $dlinicio = $_POST['dlinicio'];
        $dlfim = $_POST['dlfim'];
     
        if(!isset($_SESSION['ordem']) && !empty($_SESSION['ordem']))
        {
            $_SESSION['ordem'] = $ordem;
            $_SESSION['operacao'] = $operacao;
            $_SESSION['pedido'] = $pedido;
            $_SESSION['dlinicio'] = $dlinicio;
            $_SESSION['dlfim'] = $dlfim;
        }

 

 

 

Se não colocar esse filtro ele vai sempre sobrescrever a sessão com o "novo" POST, que no caso do REFRESH vai vir em branco pois o PHP não passa resource.

Amigo, fiz isso e agora não ta reconhecendo o filtro da ordem, ele ta trazendo todos os resultados por mais que eu informe a ordem

Compartilhar este post


Link para o post
Compartilhar em outros sites

Simples:

<?php
session_start();
if($_SERVER['REQUEST_METHOD'] == 'POST'){
	// se for POST, salva na sessions...
	$_SESSION['ordem'] = $_POST['ordem'];
	$_SESSION['operacao'] = $_POST['operacao'];
	$_SESSION['pedido'] = $_POST['pedido'];
	$_SESSION['dlinicio'] = $_POST['dlinicio'];
	$_SESSION['dlfim'] = $_POST['dlfim'];
}
// se existir o post puxa o post, se nao puxa da session...
$ordem = (isset($_POST['ordem']) ? $_POST['ordem'] : (isset($_SESSION['ordem']) ? $_SESSION['ordem'] : ''));
$operacao = (isset($_POST['operacao']) ? $_POST['operacao'] : (isset($_SESSION['operacao']) ? $_SESSION['operacao'] : ''));
$pedido = (isset($_POST['pedido']) ? $_POST['pedido'] : (isset($_SESSION['pedido']) ? $_SESSION['pedido'] : ''));
$dlinicio = (isset($_POST['operacao']) ? $_POST['operacao'] : (isset($_SESSION['operacao']) ? $_SESSION['operacao'] : ''));
$dlfim = (isset($_POST['ordem']) ? $_POST['ordem'] : (isset($_SESSION['ordem']) ? $_SESSION['ordem'] : ''));

header('Content-Type: text/html; charset=utf-8');

error_reporting (E_ALL & ~ E_NOTICE & ~ E_DEPRECATED);
		
$conexao = mysql_connect('127.0.0.1','root','');
$banco = mysql_select_db('dbpixie', $conexao);
		
if($conexao)
{
	if($ordem || $operacao || $pedido || $dlinicio || $dlfim)
	{
		//Exibir registros da consulta
		$consulta = mysql_query("SELECT ordem, pedido, DATE_FORMAT(inicio_prev,'%d/%m %H:%i') as inicio_prev, DATE_FORMAT(fim_prev,'%d/%m %H:%i') as fim_prev, DATE_FORMAT(inicio_prod,'%d/%m %H:%i') as inicio_prod , DATE_FORMAT(fim_prod,'%d/%m %H:%i') as fim_prod FROM pixie_andon_nc where ordem = '$ordem' and pedido = '$pedido' and operacao = '$operacao' and DATE_FORMAT(inicio_prev, '%d/%m/Y') >= '$dlinicio' and DATE_FORMAT(fim_prev, '%d/%m/%Y') <= '$dlfim'"); 
	}
	else
	{
		//Exibir tudo
		$consulta = mysql_query("SELECT ordem, pedido, DATE_FORMAT(inicio_prev,'%d/%m %H:%i') as inicio_prev, DATE_FORMAT(fim_prev,'%d/%m %H:%i') as fim_prev, DATE_FORMAT(inicio_prod,'%d/%m %H:%i') as inicio_prod , DATE_FORMAT(fim_prod,'%d/%m %H:%i') as fim_prod FROM pixie_andon_nc where operacao = '00015'"); //Exibir últimos 10 registros, DESC
	}
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
14 minutos atrás, Mateus Silva disse:

Simples:


<?php
session_start();
if($_SERVER['REQUEST_METHOD'] == 'POST'){
	// se for POST, salva na sessions...
	$_SESSION['ordem'] = $_POST['ordem'];
	$_SESSION['operacao'] = $_POST['operacao'];
	$_SESSION['pedido'] = $_POST['pedido'];
	$_SESSION['dlinicio'] = $_POST['dlinicio'];
	$_SESSION['dlfim'] = $_POST['dlfim'];
}
// se existir o post puxa o post, se nao puxa da session...
$ordem = (isset($_POST['ordem']) ? $_POST['ordem'] : (isset($_SESSION['ordem']) ? $_SESSION['ordem'] : ''));
$operacao = (isset($_POST['operacao']) ? $_POST['operacao'] : (isset($_SESSION['operacao']) ? $_SESSION['operacao'] : ''));
$pedido = (isset($_POST['pedido']) ? $_POST['pedido'] : (isset($_SESSION['pedido']) ? $_SESSION['pedido'] : ''));
$dlinicio = (isset($_POST['operacao']) ? $_POST['operacao'] : (isset($_SESSION['operacao']) ? $_SESSION['operacao'] : ''));
$dlfim = (isset($_POST['ordem']) ? $_POST['ordem'] : (isset($_SESSION['ordem']) ? $_SESSION['ordem'] : ''));

header('Content-Type: text/html; charset=utf-8');

error_reporting (E_ALL & ~ E_NOTICE & ~ E_DEPRECATED);
		
$conexao = mysql_connect('127.0.0.1','root','');
$banco = mysql_select_db('dbpixie', $conexao);
		
if($conexao)
{
	if($ordem || $operacao || $pedido || $dlinicio || $dlfim)
	{
		//Exibir registros da consulta
		$consulta = mysql_query("SELECT ordem, pedido, DATE_FORMAT(inicio_prev,'%d/%m %H:%i') as inicio_prev, DATE_FORMAT(fim_prev,'%d/%m %H:%i') as fim_prev, DATE_FORMAT(inicio_prod,'%d/%m %H:%i') as inicio_prod , DATE_FORMAT(fim_prod,'%d/%m %H:%i') as fim_prod FROM pixie_andon_nc where ordem = '$ordem' and pedido = '$pedido' and operacao = '$operacao' and DATE_FORMAT(inicio_prev, '%d/%m/Y') >= '$dlinicio' and DATE_FORMAT(fim_prev, '%d/%m/%Y') <= '$dlfim'"); 
	}
	else
	{
		//Exibir tudo
		$consulta = mysql_query("SELECT ordem, pedido, DATE_FORMAT(inicio_prev,'%d/%m %H:%i') as inicio_prev, DATE_FORMAT(fim_prev,'%d/%m %H:%i') as fim_prev, DATE_FORMAT(inicio_prod,'%d/%m %H:%i') as inicio_prod , DATE_FORMAT(fim_prod,'%d/%m %H:%i') as fim_prod FROM pixie_andon_nc where operacao = '00015'"); //Exibir últimos 10 registros, DESC
	}
}

 

Boa tarde Mateus, legal, realmente assim conseguiu manter os dados após o refresh, a dúvida é: dessa forma que eu fiz, eu consigo filtrar somente uma informação ou preciso preencher todos os campos? 

 

Pelo que testei aqui, se eu filtrar todos os campos

 

Ordem

Pedido
Operacao

dlinicio

dlfim

 

O resultado aparece com o select, porém se eu quiser pesquisar somente um intervalo de datas, ou somente o pedido, ou somente a ordem, não esta me trazendo nenhuma informação, e se eu deixo em branco tudo ele cai no else como deveria...

Compartilhar este post


Link para o post
Compartilhar em outros sites

JhoniWillian tenta assim:

// verifica se há
(isset($_SESSION))
// verifica se há POST, se há SESSION, se é vazia 
if($_POST['ordem']){ $ordem = $_POST['ordem']; $_SESSION['ordem'] = $ordem; } 
else if($_SESSION['ordem']){ $ordem = $_SESSION['ordem']; } 
else { $_SESSION['ordem'] == ''; $ordem = '' } 

// por fim se a variavel é vazia
if ($ordem == ''){
// faz isso
else {}

É mais uma questão de lógica tua ai...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.