manolegal 12 Denunciar post Postado Janeiro 25, 2016 Olá amigos Estou com problema para manter a ordenação dos dados em uma paginação, a partir da pagina 2. Tentei me basear no tópico http://forum.imasters.com.br/topic/395199-resolvidopaginacao-perde-o-valor-da-busca/ porém não consegui resolver. Partes do meu código: <form id="funcionarios_cadastro" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> <?php if ($_POST['ordenar_select'] != "" ){ $_SESSION['ordenar_select'] = $_POST['ordenar_select']; } $teste = $_SESSION['ordenar_select']; if($teste == "1"){ // Nome $ordenar_por = " nome_ordenar ASC";} elseif($teste == "2"){................. ?> <div class="form-group col-md-2"> <select class="form-control h2" id="ordenar_select" name="ordenar_select" title="Ordenar Dados"> <option value="" selected="selected">- Ordenar por -</option> <option value="1">Nome</option> <option value="2">Data Nascimento</option> <option value="3">Endereço</option> </select> </div> Desta forma descrita, funciona corretamente a ordenação em todas as páginas da paginação, porém quando dou um refresh na página ou a acesso através do Menu, fica mantido o valor da Sessão. Preciso que ao dar Refresh no formulário o campo assuma o valor "", ao invés de manter o valor da Sessão anteriormente selecionado. Compartilhar este post Link para o post Compartilhar em outros sites
manolegal 12 Denunciar post Postado Janeiro 26, 2016 Tentei da seguinte maneira também: if ($_POST['ordenar_select'] != "" ){ $_SESSION['ordenar_select'] = $_POST['ordenar_select']; $teste = $_SESSION['ordenar_select']; } else{ $teste = $_POST['ordenar_select']; } Porém se eu selecionar um tipo de ordenação (diferente de "") só mantém a ordenação na primeira página. Compartilhar este post Link para o post Compartilhar em outros sites
Rafa Jaques 9 Denunciar post Postado Janeiro 26, 2016 O que seria exatamente esse "ordenar_select"? Se você usa MySQL pode aplicar o LIMIT para paginar os resultados. Compartilhar este post Link para o post Compartilhar em outros sites
manolegal 12 Denunciar post Postado Janeiro 26, 2016 Rafa, obrigado pelo retorno Utilizo postgres, "ordenar_select" é um campo onde seleciono a ordenação da consulta. <div class="form-group col-md-2"> <select class="form-control h2" id="ordenar_select" name="ordenar_select" title="Ordenar Dados"> <option value="" selected="selected">- Ordenar por -</option> <option value="1">Nome</option> <option value="2">Data Nascimento</option> <option value="3">Endereço</option> </select> </div> De acordo com o valor selecionado (1, 2 ou 3) é realizada a ordenação da consulta. if($teste == "1"){ // Nome $ordenar_por = " nome_ordenar ASC";} elseif($teste == "2"){................. $Sql = "SELECT .... ORDER BY $ordenar_por LIMIT $limite_por_pagina OFFSET $inicio"; Se por exemplo ao selecionar a opção 2 (data nascimento) os dados serão ordenados por esta opção. Ao utilizar este código: if ($_POST['ordenar_select'] != "" ){ $_SESSION['ordenar_select'] = $_POST['ordenar_select']; } $teste = $_SESSION['ordenar_select']; A ordenação fica correta em todas as páginas, porém a sessão fica ativa, e ao abrir novamente o formulário fica ordenado por esta sessão. Ao utilizar este código: if ($_POST['ordenar_select'] != "" ){ $_SESSION['ordenar_select'] = $_POST['ordenar_select']; $teste = $_SESSION['ordenar_select']; } else{ $teste = $_POST['ordenar_select']; } Fica ordenado só na primeira página. Compartilhar este post Link para o post Compartilhar em outros sites
Rafa Jaques 9 Denunciar post Postado Janeiro 26, 2016 Já pensou em trocar o sistema para GET? Aí a ordenação só ocorrerá enquanto houver o valor de ordenação na URL. Automaticamente quando você trocar de página o GET irá embora. Você só vai precisar repetir os valores nos links da paginação. Compartilhar este post Link para o post Compartilhar em outros sites
manolegal 12 Denunciar post Postado Janeiro 26, 2016 Seguindo sua orientação fiz da seguinte forma: echo '<li><a href="?pagina='.$i.'&ordenar_select='.$ordenar_select.'"> '.$i.' </a></li>'; E funcionou. Seria isto? Obrigado pela ajuda. Compartilhar este post Link para o post Compartilhar em outros sites
Rafa Jaques 9 Denunciar post Postado Janeiro 27, 2016 Isso aí mesmo! Só não esquece de tratar as variáveis antes de colocar no código, certo? Pra não correr risco de sofrer SQL Injection. Aqui tem um artigo meu sobre filtragem de variáveis: http://www.phpit.com.br/artigos/filtrando-e-validando-dados-no-php-com-filter_var.phpit Compartilhar este post Link para o post Compartilhar em outros sites