Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
}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
Não sei como você está fazendo mas o teu filtro não pode buscar pelo $_POST e sim pelo $_ SESSION entende?
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 filtroVocê iniciou a $_SESSION com start no inicio do arquivo?
session_start();
E tenta fazer assim:
if($_SESSION['ordem'])
// muda para
if (isset($_SESSION['ordem'])){<?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.>
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 ordemSimples:
<?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
}
}>
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...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...