JhoniWillian 0 Denunciar post Postado Setembro 27, 2017 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
AndersonWS 10 Denunciar post Postado Setembro 27, 2017 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
JhoniWillian 0 Denunciar post Postado Setembro 28, 2017 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
AndersonWS 10 Denunciar post Postado Setembro 28, 2017 Não sei como você está fazendo mas o teu filtro não pode buscar pelo $_POST e sim pelo $_ SESSION entende? Compartilhar este post Link para o post Compartilhar em outros sites
JhoniWillian 0 Denunciar post Postado Setembro 28, 2017 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
AndersonWS 10 Denunciar post Postado Setembro 28, 2017 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
kinzinho 4 Denunciar post Postado Setembro 28, 2017 <?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
JhoniWillian 0 Denunciar post Postado Setembro 28, 2017 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
Mateus Silva 64 Denunciar post Postado Setembro 28, 2017 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
JhoniWillian 0 Denunciar post Postado Setembro 28, 2017 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
AndersonWS 10 Denunciar post Postado Setembro 28, 2017 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