[Resolvido] Paginação de resultado.
Boa tarde senhores, preciso de luz, dica, meio, idéia de resolver uma paginação em uma busca. Já foram 2 dias perdidos de trabalho olhando pro código e o máximo que consegui chegar foi aqui:
buscaDocs.php
<?php
include "conecta.php";
include "libera.php";
include "funcoes.php";
include "timeout.php";
timeout(); // verifica tempo de sessao se esta expirado!
check(); // Verifica se o usuário está logado
// RESGATA OS VALORES DA BUSCA, FILTRO E A PALAVRA-CHAVE
$TipoFiltro = $_POST["filtro"];
$qBusca = trim($_POST["busca"]);
$numreg = 15; //numero de páginas limite na paginação
if (!isset($pg)) {
$pg = 0;
}
$inicial = $pg * $numreg;
// -----------------------
// querys para filtro.
// -----------------------
if ($TipoFiltro == 1) {
$resultado = mysql_query("SELECT d.id_doc, d.nome_doc, d.sigla_doc, d.caminho_doc, DATE_FORMAT(d.data_doc,'%d/%m/%Y') AS DataDoc, a.nome_area AS NomeArea FROM documentos AS d INNER JOIN areas AS a ON d.area_doc = a.id_area AND d.nome_doc LIKE '%$qBusca%' ORDER BY a.nome_area,d.data_doc,d.nome_doc ASC LIMIT $inicial, $numreg");
$TotalRows = mysql_query("SELECT count(d.id_doc) AS Total FROM documentos AS d INNER JOIN areas AS a ON d.area_doc = a.id_area AND d.nome_doc LIKE '%$qBusca%'");
$captura = mysql_fetch_array($TotalRows); //atribui em forma de array.
$quantreg = $captura["Total"];
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="[http://www.w3.org/1999/xhtml">](http://www.w3.org/1999/xhtml)
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Dist. Rio Branco @ INTRANET</title>
<link rel="stylesheet" href="css/estiloGeral.css" type="text/css" />
<link rel="stylesheet" href="css/subPaginas.css" type="text/css" />
</head>
<body>
<div id="wrap">
<div id="topo">
<img src="img/logomarca.gif" /><img src="img/topo.gif" />
</div>
<div id="conteudo">
<div id="divMenu">
<? include "navebar.php" ?>
</div>
<div id="navegacao">
<div id="MenuCD">
<? include "MenuCD.php" ?>
</div>
<div id="conteudo-CD">
<div id="Resultado-Info">
<h1>Resultados de: <span class="qBusca"><? echo '"'. $qBusca; ?>".</span></h1>
</div>
<div id="Resultado-Busca">
<table id="tb-ListaDoc" width="720" border="0" cellpadding="0" cellspacing="0">
<tr class="Titulo-ListaDoc" height="25">
<?
// QUANTIDADE DE RESULTADOS ENCONTRADOS.
if ($captura["Total"] == 0) {
echo '<p style="margin-left:50px; color:#006699;">A busca encontrou nenhum resultado.</p>';
} else {
if ($captura["Total"] == 1) {
echo '<p style="margin-left:50px; color:#006699;">A busca encontrou '.$captura["Total"].' resultado.</p>'; } else {
echo '<p style="margin-left:50px; color:#006699;">A busca encontrou '.$captura["Total"].' resultados.</p>';
}
}
// VERIFICO SE É ADMIN PARA ADICIONAR UMA COLUNA PRA EXCLUSAO DE ARQUIVO.
if ($_SESSION["IDdocara"] == "A") {
echo '<td></td>';
}
?>
<td class="Barra-titulos">SIGLA</td>
<td class="Barra-titulos">NOME DOCUMENTO</td>
<td class="Barra-titulos">ÁREA</td>
<td class="Barra-titulos">DATA INCLUSÃO</td>
<td class="Barra-titulos"></td>
</tr>
<? while($valor = mysql_fetch_array($resultado)) {
if ($bool == 0){
if ($_SESSION["IDdocara"] == "A") {
echo '<tr height="20" align="center">
<td><a href="DelCD.php?Doc='.encrypt_url($valor["id_doc"]).'"><img src="img/close.png" alt="Excluir documento/procedimento" border="0" /></a></td>
<td class=SiglaDoc>'.$valor["sigla_doc"].'</td>
<td class=NomeDoc>'.$valor["nome_doc"].'</td>
<td class=NomeAreaDoc>'.$valor["NomeArea"].'</td>
<td class=DataDoc>'.$valor["DataDoc"].'</td>
<td width="90"><a href="view.php?arquivo='.encrypt_url($valor["id_doc"]).'">Visualizar</a></td>
</tr>';
} else {
echo '<tr height="20" align="center">
<td class=SiglaDoc>'.$valor["sigla_doc"].'</td>
<td class=NomeDoc>'.$valor["nome_doc"].'</td>
<td class=NomeAreaDoc>'.$valor["NomeArea"].'</td>
<td class=DataDoc>'.$valor["DataDoc"].'</td>
<td width="90"><a href="view.php?arquivo='.encrypt_url($valor["id_doc"]).'">Visualizar</a></td>
</tr>';
}
$bool = 1;
} else {
if ($_SESSION["IDdocara"] == "A") {
echo '<tr height="20" class="zebra" align="center">
<td><a href="DelCD.php?Doc='.encrypt_url($valor["id_doc"]).'"><img src="img/close.png" alt="Excluir documento/procedimento" border="0" /></a></td>
<td class=SiglaDoc>'.$valor["sigla_doc"].'</td>
<td class=NomeDoc>'.$valor["nome_doc"].'</td>
<td class=NomeAreaDoc>'.$valor["NomeArea"].'</td>
<td class=DataDoc>'.$valor["DataDoc"].'</td>
<td width="90"><a href="view.php?arquivo='.encrypt_url($valor["id_doc"]).'">Visualizar</a></td>
</tr>';
} else {
echo '<tr height="20" class="zebra" align="center">
<td class=SiglaDoc>'.$valor["sigla_doc"].'</td>
<td class=NomeDoc>'.$valor["nome_doc"].'</td>
<td class=NomeAreaDoc>'.$valor["NomeArea"].'</td>
<td class=DataDoc>'.$valor["DataDoc"].'</td>
<td width="90"><a href="view.php?arquivo='.encrypt_url($valor["id_doc"]).'">Visualizar</a></td>
</tr>';
}
$bool = 0;
}
} ?>
</table>
<?
//arquivo que irá fazer a paginação
echo "<br><br>";
include("paginacao.php");
?>
</div>
</div>
</div>
</div>
</body>
</html>
paginacao.php (Script pronto pego aqui no forum mesmo)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="[http://www.w3.org/1999/xhtml">](http://www.w3.org/1999/xhtml)
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<style type="text/css"><!--
.pgoff { font-family: Verdana, Arial, Helvetica; font-size: 11px; color: #FF0000; text-decoration: none}
a.pg {font-family: Verdana, Arial, Helvetica; font-size: 11px; color: #003366; text-decoration: none}
a:hover.pg {font-family: Verdana, Arial, Helvetica; font-size: 11px; color: #0066cc; text-decoration:underline}
-->
</style>
</head>
<body>
<?php
$quant_pg = ceil($quantreg/$numreg);
$quant_pg++;
// Verifica se esta na primeira página, se nao estiver ele libera o link para anterior
if ($pg > 0) {
echo "<a href=".$_SERVER['PHP_SELF']."?pg=".($pg-1) ."class=pg><b>« anterior</b></a>";
} else {
echo "<font color=#CCCCCC>« anterior</font>";
}
// Faz aparecer os numeros das página entre o ANTERIOR e PROXIMO
for($i_pg=1;$i_pg<$quant_pg;$i_pg++) {
// Verifica se a página que o navegante esta e retira o link do número para identificar visualmente
if ($pg == ($i_pg-1)) {
echo " <span class=pgoff>[$i_pg]</span> ";
} else {
$i_pg2 = $i_pg-1;
echo " <a href=".$_SERVER['PHP_SELF']."?pg=$i_pg2 class=pg><b>$i_pg</b></a> ";
}
}
// Verifica se esta na ultima página, se nao estiver ele libera o link para próxima
if (($pg+2) < $quant_pg) {
echo "<a href=".$_SERVER['PHP_SELF']."?pg=".($pg+1)." class=pg><b>próximo »</b></a>";
} else {
echo "<font color=#CCCCCC>próximo »</font>";
}
?>
</body>
</html>
O que acontece é que quando passo para a segunda página, o mesmo parece que não executa minha query ou simplesmente perde os valores das variáveis. A palavra que eu pesquiso deve me mostrar 31 resultados, gerando 3 páginas. Isso está perfeito, gera as paginas bonitinho, somente ao clicar na pagina seguinte que não mostra mais o resultado e gera o seguinte erro: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\apache2triad\htdocs\intranet\buscaDocs.php on line 118
Alguem poderia me ajudar?
Um grande abraço,
Discussão (3)
Carregando comentários...