berkowitz 2 Denunciar post Postado Fevereiro 16, 2007 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!!! Compartilhar este post Link para o post Compartilhar em outros sites
berkowitz 2 Denunciar post Postado Fevereiro 21, 2007 Aew galera!!! Alguém pode me ajudar por favor??? não consegui ainda...VALEW! Compartilhar este post Link para o post Compartilhar em outros sites
berkowitz 2 Denunciar post Postado Fevereiro 21, 2007 Cara.... beleza? Então... o problema não é com os resultados! Mudei para GET e mantive os parâmetros da busca na URL, porém a paginação continua não funcionando! Acredito ser algum erro de lógica meu, e acredito ainda ser nessa parte: //-- 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; To tentando faz um tempo mas até agora não consegui http://forum.imasters.com.br/public/style_emoticons/default/cry.gif Compartilhar este post Link para o post Compartilhar em outros sites
berkowitz 2 Denunciar post Postado Fevereiro 21, 2007 Pessoal, tive certeza que o problema é na minha query! Então resolvi fazer a paginação 100% com o PHP e não depender do SQL Server. Mesmo assim não funcionou! huauhahuahuaHUAA.... to apanhando, mas acredito que agora seja mais facil de resolver! Meu script ficou assim: <? //-- 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(); //-- Inicia as variaveis utilizadas na paginação $qtde_pag = 20; $i = 0; $hasFilter = false; //-- Caso haja algum filtro, ele é adicionado aqui if(isset($_GET["c"])) { $sub_query = " AND " . strtolower($_GET['c']) . " LIKE '%" . $_GET['v'] . "%'"; $hasFilter = true; } else { $sub_query = ""; } //-- Define o comando sql da consulta //-- Quantidade de registros da consulta $total = mssql_query("SELECT idFuncionario FROM funcionarios WHERE 1=1" . $sub_query); while($t = mssql_fetch_array($total)) { ++$i; } $total = $i; $query = "SELECT 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 WHERE 1=1" . $sub_query; $listaFuncionarios = mssql_query($query); @$pg = $_GET['p']; if(empty($pg)) { $start = 0; } else { $start = (($pg-1)*$qtde_pag); } //================================= // AQUI ESTÁ A LINHA QUE NÃO ENTENDI //================================= $row = mssql_fetch_row($listaFuncionarios,$start); $i = 0?> <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 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"; ++$i; if($i >= $qtde_pag) { break; } } $sql->desconecta();?> </table><br /><? //-- Esquema de navegação das páginas $pgs = ceil($total/$qtde_pag); $anterior = $pg-1; $proximo = $pg+1; if (!isset($pg)) { $pg = 1; $proximo = 2; } echo "<div class='navegacaoListaFuncionarios'>"; $compLink = ($hasFilter)?"&c=" . $_GET['c'] . "&v=" . $_GET['v']:""; if($pg > 1) { echo "<a href='" . $_SERVER["PHP_SELF"] . "?p=$anterior$compLink'>Anterior</a> | "; } for($num == 1; $num <= $pgs; $num++) { if($pg == $num) { echo " <b>[$num]</b> "; } else { echo " <a href='" . $_SERVER["PHP_SELF"] . "?p=$num$compLink'>$num</a> "; } } if($pg < $pgs) { echo " | <a href='" . $_SERVER["PHP_SELF"] . "?p=$proximo$compLink'>Próxima</a>"; } echo "</div><br />"; //-- Chamada do rodapé require_once("includes/rodape.php");?> E agora???? VALEW!! Compartilhar este post Link para o post Compartilhar em outros sites
berkowitz 2 Denunciar post Postado Fevereiro 22, 2007 ninguém? :( Compartilhar este post Link para o post Compartilhar em outros sites
felipeduardo 0 Denunciar post Postado Junho 3, 2008 nobre colega passei pelo mesmo problema espero que ja tenha conseguido uma solucao... caso não ou pra futura consultas... CODE $Tabela = "TABELA";$Pg = $_GET['Pg']; if (empty($Pg)) { $Pg = 0; } $Busca = mssql_query('SELECT * FROM '.$Tabela); $pgs = ceil(mSsql_num_rows($Busca) / $TotalPG); mssql_data_seek($Busca , ($Pg * $TotalPG)); $i = 0; while(($Linha = mssql_fetch_row($Busca)) && $i < $TotalPG){ echo $Linha[1] . '<br>'; $i++; } if ($Pg > 0) { $Menos = $Pg - 1; echo "<a href='?Pg=".$Menos."'><= Voltar</a><b> | </b>"; } if ($Pg < ($pgs-1)) { $Mais = $Pg + 1; echo "<a href='?Pg=".$Mais."'>Próximo =></a>"; } http://forum.wmonline.com.br/index.php?showtopic=113068 Compartilhar este post Link para o post Compartilhar em outros sites