Paginação com Sessão + SQL Server
Galera, to apanhando LEGAL aki!!!
Tenho um banco de dados SQL Server com 3000 registros.
Criei uma página de consulta, onde na mesma página eu vejo a lista completa, executo as queries de busca, etc...
Consegui fazer a paginação dos dados do sql server e ta funcionando quando listo a tabela inteira! porém quando faço uma busca, essa paginação não está funcionando!!!
Como se trata de uma busca, eu armazenei os valore em uma SESSION para não perdê-los! É a melhor forma? Pq minha paginação não ta rolando??
Segue a codificação completa:
<? //-- Declarando as sessões necessárias para a navegação desta página session_start(); $hasfilter = ($_POST["lista_queryBusca"])?true:false; if($hasfilter) { $_SESSION["lista_parametrosBusca"] = $_POST["lista_parametrosBusca"]; $_SESSION["lista_queryBusca"] = $_POST["lista_queryBusca"]; } //-- Configurações desta página $titulo = "Lista telefônica 2007 - " . $_SESSION["lista_queryBusca"]; //-- Chamada do arquivo de configurações require_once("includes/config.ini.php"); //-- Chamada do arquivo de classes require_once("includes/classes.php"); //-- Chamada do topo include_once("includes/topo.php"); ##======================== //-- Início da página ##======================== //-- Conecta ao BD $sql = new conexao(); //-- Verifica qual a página atual $pagina = $_GET['pagina']; if($pagina == "") $pagina = 1; $inicio = $pagina - 1; $inicio = $qtde_pag * $pagina; //-- Caso haja algum filtro, ele é adicionado aqui if(isset($_SESSION["lista_parametrosBusca"])) { $sub_query = " AND " . strtolower($_SESSION["lista_parametrosBusca"]) . " LIKE '%" . $_SESSION["lista_queryBusca"] . "%'"; } else { $sub_query = ""; } //-- Define o comando sql da consulta $queryCont = "SELECT COUNT(*) FROM funcionarios WHERE 1=1" . $sub_query; $query = "SELECT TOP " . $qtde_pag . " prontuario,nome,apelido,nomearea,sigla,unidade,andar,diretoria,cargo,"; $query .= "fone,ramal,fax,email,nomesecretaria,CAST(DAY(aniversario) AS nvarchar(2)) + '/' + CAST(MONTH(aniversario) AS nvarchar(2)) AS dataniver,divulganiver "; $query .= "FROM funcionarios "; $query .= "WHERE idFuncionario NOT IN ("; $query .= " SELECT TOP " . $inicio . " idFuncionario FROM funcionarios"; $query .= ")" . $sub_query; //-- Traz a quantidade total de registros na tabela $tabelaTotal = mssql_query($queryCont); $sql->desconecta(); $qtde_total = mssql_fetch_array($tabelaTotal); $qtde_total = $qtde_total[0]; //-- Quantidade de páginas da consulta $qtde_mod = ($qtde_total % $qtde_pag); $qtde_pags = intval(($qtde_total - $qtde_mod) / $qtde_pag); if($qtde_mod > 0) $qtde_pags++;?> <table width="95%" border="0" cellspacing="0" cellpadding="0" class="listaFuncionarios" align="center"> <tr class="titulo"> <td>Prontuário</td> <td>Nome</td> <td>Área</td> <td>Unidade</td> <td>Diretoria</td> <td>Cargo</td> <td>Telefone</td> <td>Fax</td> <td>E-mail</td> <td>Data do aniversário</td> </tr><? //-- Apresenta os resultados da consulta na tabela $sql->conexao(); $listaFuncionarios = mssql_query($query); while($usuarios = mssql_fetch_array($listaFuncionarios)) { //-- Atribui os valores vindos do BD para as variaveis correspondentes $pront = $usuarios['prontuario']; $apelido = $usuarios['apelido']; $nome = (strlen($apelido) > 0)?$usuarios['nome'] . " (" . $apelido . ")":$usuarios['nome']; $area = $usuarios['sigla'] . " - " . $usuarios['nomearea']; $unidade = $usuarios['unidade'] . " - " . $usuarios['andar']; $diretoria = $usuarios['diretoria']; $cargo = $usuarios['cargo']; $ramal = $usuarios['ramal']; $fone = (strlen($ramal) > 0)?$usuarios['fone'] . " (r. " . $ramal . ")":$usuarios['fone']; $fax = $usuarios['fax']; $mail = (strlen($usuarios['email']) > 0)?"<a href='mailto:" . $usuarios['email'] . "'>" . $usuarios['email'] . "</a>":""; $divulgar = $usuarios['divulganiver']; $dataniver = ($divulgar == 1)?$usuarios['dataniver']:"Data não divulgada"; echo "<tr style='text-align: center; font-weight: normal;'>\n"; echo " <td>$pront</td>\n"; echo " <td>$nome</td>\n"; echo " <td>$area</td>\n"; echo " <td>$unidade</td>\n"; echo " <td>$diretoria</td>\n"; echo " <td>$cargo</td>\n"; echo " <td>$fone</td>\n"; echo " <td>$fax</td>\n"; echo " <td>$mail</td>\n"; echo " <td>$dataniver</td>\n"; echo "</tr>\n"; } $sql->desconecta();?> </table><br /> <div class="navegacaoListaFuncionarios"><? //-- Mostra os links de navegação das páginas $primeiraPag = $pagina - (intval(($rangePag - ($rangePag % 2)) / 2)); if($primeiraPag <= 0) $primeiraPag = 1; $ultimaPag = $primeiraPag + $rangePag; if($ultimaPag > $qtde_pags) { $ultimaPag = $qtde_pags; $primeiraPag = $ultimaPag - $rangePag; if($primeiraPag <= 0) $primeiraPag = 1; } $links .= "<a href=\"" . $_SERVER["PHP_SELF"] . "?pagina=1\">«</a> \n"; for($i=$primeiraPag; $i<$ultimaPag; $i++) { if($pagina == $i) $links .= "$i\n"; else $links .= "<a href=\"" . $_SERVER["PHP_SELF"] . "?pagina=$i\">$i</a>\n"; } $links .= "<a href=\"" . $_SERVER["PHP_SELF"] . "?pagina=$qtde_pags\">»</a>\n"; echo $links;?> </div><br /><? //-- Chamada do rodapé require_once("includes/rodape.php");?>
Alguém pode me ajudar PELO AMOR DE DEUS????????/ http://forum.imasters.com.br/public/style_emoticons/default/upset.gif
VALEW!!!
Discussão (5)
Carregando comentários...