Sistema de Busca com Paginação

03/09/2015

0

A questão é:


Quando faço a consulta obtenho o seguinte resultado [imagem1]

Ao clicar para ir para página 2, obtenho o seguinte resultado [imagem2]

Ou seja, na página "1" tudo funcionando com o total de resultados exibidos (10) e com os total de links (2), só que ao ir para página "2", aparece muito mais links, o que indica que ele consultou e retornou toda tabela, preencheu com a quantidade respectiva de links e mostrou o conteúdo errado na página 2.

Obs:

19 campos com o termo CONFEF;
10 resultados por paginação;
4 links para página anterior e seguinte;
77 campos na tabela duvidas;

[img:descricao=imagem1]http://arquivo.devmedia.com.br/forum/imagem/451932-20150903-191647.png[/img]

[img:descricao=imagem2]http://arquivo.devmedia.com.br/forum/imagem/451932-20150903-191711%20%281%29.png[/img]

formulario.php
<body>


<form name="frmBusca" method="post" enctype="multipart/form-data" action="pesquisa.php?pag=1" >
    <input type="text" name="palavra" />
    <input type="submit"  value="Buscar" />
</form>



</body>


pesquisa.php
<!-- Inicio do Sistema de Busca Interna -->

<?php 

//Se pg não existe atribui 1 a variável pag
$pag = (isset($_GET['pag'])) ? (int)$_GET['pag'] : 1 ;

if($pag=='0'){
	$pag = '1';
}

// Pegamos a palavra
$palavra = trim($_POST['palavra']);

$maximo = '10';

//Atribui a variável inicio o inicio de onde os registros vão ser mostrados por página, exemplo 0 à 10, 11 à 20 e assim por diante
$inicio = ($pag * $maximo) - $maximo;

$sql = "SELECT * FROM duvidas WHERE resposta LIKE '%$palavra%' LIMIT ".$inicio. ", ". $maximo;

try {
	$consulta = $conecta->prepare($sql); 
	$consulta->execute();
 	$conecta->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
	
	$resultado = $consulta->fetchAll();// Recuperar todos valores encontrados
	$count = $consulta->rowCount(PDO::FETCH_ASSOC);// Quantos registros foram encontrados
}catch (PDOException $erro) {
 	die("Não foi possível conectar ao banco de dados :" . $erro->getMessage());
}

if ($count != 0) {
	foreach($resultado as $res){
			$pergunta 	= $res['pergunta'];
			$id			= $res['id'];
			
			echo '<br>';
			echo '<a href="http://cref14.org.br/visualizar_resposta.php?id='.$id.'">• <span style="color:black; font-size:10px;">'.$pergunta.'</span></strong>';
			echo '<br>';
		}
		
		//echo "Foram encontrados ".$count." registro(s)";
	}
	// Se não houver registros
	else {
		echo "Nenhum produto foi encontrado com a palavra ".$palavra."";
	}

?>

<!-- Fim Sistema de Busca Interna -->

<!-- Inicio Paginação -->

 <?php
// Query de consulta
$sql = "SELECT * FROM duvidas WHERE resposta LIKE '%$palavra%'";

 	try {
	$consulta = $conecta->prepare($sql); 
	$consulta->execute();
 	$conecta->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
	
	$resultado = $consulta->fetchAll();// Recuperar todos valores encontrados
	$count = $consulta->rowCount(PDO::FETCH_ASSOC);// Quantos registros foram encontrados
}catch (PDOException $erro) {
 	die("Não foi possível conectar ao banco de dados :" . $erro->getMessage());
}
$paginas = ceil($count/$maximo);
$links = '4';
	
	echo '</br></br></br><ul id="paginacao">'; 
				
echo '<li><a href="pesquisa.php?pag=1" >Primeira</a></li>';
	
	for($i = $pag-$links; $i <= $pag-1; $i++){
		if($i <= 0){
		}else{
			echo '<li><a href="pesquisa.php?pag='.$i.'">'.$i.'</a></li>';
		}
	}
	
	echo "<li>$pag</li>";
	
	for($i = $pag+1; $i <= $pag+$links; $i++){
		if($i > $paginas){
		
		}else{
			echo '<li><a href="pesquisa.php?pag='.$i.'">'.$i.'</a></li>';
		}
	}	       
   	 echo '<li><a href="pesquisa.php?pag='.$paginas.'">Última</a></li></br></br></br>';
echo'</ul>';


?>

<!-- Fim Paginação -->
Lucas

Lucas

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar