Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

berkowitz

Paginação com Sessão + SQL Server

Recommended Posts

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.